Support Online
Skip to main content

C++ Text Inversion

What Will You Learn in This Guide?

In this guide, you will learn the most effective ways to reverse the order of characters in a text in C++ with code examples.
You will use the std::reverse() function in STL (Standard Template Library), learn manual swapping and discover performance differences.

Technical Summary

This guide explains different ways to reverse strings in C++.
The easiest and most efficient way is to use std::reverse().
Other methods are strrev() for C-style text and manual loop/swap inversion techniques.
The goal is to do both temporary printing and permanent inversion.


Easiest Method: Using std::reverse() (STL)

The most modern, safe and common way to reverse text in C++ is to use the std::reverse() function located in the <algorithm> header file.
This function makes changes to the text address directly and efficiently.

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;

int main()
{
string metin = "GenixNode sunucusu";
// Metnin başlangıç ve bitiş yineleyicilerini kullanarak yerinde tersine çevirir.
reverse(metin.begin(), metin.end());
cout << "Ters Metin: " << metin << endl;
return 0;
}

For C-Style Texts: strrev() Function

If you are working with a C-style character array (char[]), you can use the strrev() function from the <cstring> library.


#include <iostream>
#include <cstring>
using namespace std;

int main()
{
char dizi[] = "tr1-node01 yedeklendi";
// C-stil metni (karakter dizisini) adresinde tersine çevirir.
strrev(dizi);
cout << "Ters Metin: " << dizi << endl;
return 0;
}

Printing in Reverse Only (Keep Original)

There may be situations where you just want to print the text to the screen in reverse order, rather than permanently changing it.


#include <iostream>
#include <string>
using namespace std;

int main()
{
string metin = "GenixNode.cloud";

cout << "Metin Tersten Yazdiriliyor:\n";
// Metnin son karakterinden başlayarak ilk karaktere kadar yazdırır.
for(int i = metin.length() - 1; i >= 0; i--)
cout << metin[i];

cout << endl;
return 0;
}

Manual Flip: Using swap()

If you want to implement your own inversion logic, you can swap characters by moving the two ends towards the middle. This method reverses text in-place.


#include <iostream>
#include <string>
#include <algorithm> // std::swap icin
using namespace std;

void manuel_ters_cevir(string &str)
{
int n = str.length();
for (int i = 0; i < n / 2; i++)
swap(str[i], str[n - 1 - i]);
}

int main()
{
string metin = "Swap ile ters cevirme";
manuel_ters_cevir(metin);
cout << "Ters Metin: " << metin << endl;
return 0;
}

Usage Areas and Efficiency Comparison

Practical Usage Scenarios

Palindrome Check: Palindrome detection can be made by comparing the reversed text with the original.

UI Formatting: In chat applications, reverse ordering can be used to show recent messages at the top.

Text Processing (NLP): Linguistic analysis can be performed by reversing the word order of sentences.

Efficiency Table of Methods

MethodTime ComplexityDomain ComplexityEase of Application
STL: std::reverse()O(n)O(1) (In Place)Very Easy
Loop / Swap (Manual)O(n)O(1) (In Place)Easy
RecursionO(n)O(n) (Call stack)Medium

Frequently Asked Questions (FAQ)

  1. Is std::reverse() only valid for std::string?

No. std::reverse() works with any STL container with bidirectional iterators (e.g. vector, list).

  1. Should I pay attention to Unicode characters when reversing text?

Yes. std::string uses UTF-8. Some Unicode characters contain more than one byte. std::reverse() reverses bytes, so emoji or ligatures may be corrupted. For Unicode support you may consider using the ICU library or std::wstring.

  1. What does in-place inversion mean?

Working on the original text is not creating a new copy. It saves memory and is advantageous in terms of performance. std::reverse() and manual swap method works in place.

  1. Why is strrev() not recommended with modern C++?

strrev() is designed for C-style arrays (char*) only. Not directly compatible with std::string objects. In modern C++, std::reverse() should be preferred.

  1. How to do recursive inversion?

Useful for educational purposes, but can be costly to call stack on large texts.


void ters_cevir(string &metin, int bas, int son) {
if (bas >= son) return;
swap(metin[bas], metin[son]);
ters_cevir(metin, bas + 1, son - 1);
}

Result

Although the time complexity of all methods is O(n), std::reverse() is the most optimized and safe solution. Manual methods are valuable for learning, but STL functions are recommended in a production environment.

You can try these codes immediately by compiling them in the GenixNode environment and observe the performance difference for yourself.