How to reverse a string in C++

In C++, reversing a string, or completely flipping a string means flipping changing the order of the characters in it, such that it reads backward.

The illustration below shows what happens when we reverse a string.

How do you reverse a string?

There are multiple implementations that can be used to reverse a string, depending on the requirements of the programme you are writing. Let’s look at all of them in order.

1. Using the built-in reverse function

C++ has an in-built reverse function, that can be called to reverse a string. This function takes in two inputs;

  • The iterator for the string start
  • The iterator for string ends

The code snippet below shows how to use this function:

#include <iostream>
//The library below must be included for the reverse function to work
#include<bits/stdc++.h>
using namespace std;
int main() {
string greeting = "Hello";
//Note that it takes the iterators to the start and end of the string as arguments
reverse(greeting.begin(),greeting.end());
cout<<greeting<<endl;
}

2. Using a loop

Within the main body of the function, a loop can be written to reverse a string.

In the loop body, you will use the swap function, which is in-built, to change element positions. In case one is not allowed to use any in-built function, the second code tab shows how to carry out the reverse loop.

The third tab shows how to do the same reversal with a while loop using the swap method.

Note: The for loop only runs for half the length of the string as swaps are happening between the first and last positions and slowly moving inwards till both i and n are the same. The while loop shows this condition more explicitly.

3. Using a function

A function can also be written to reverse a string using recursion.

The code snippet below shows how:

#include <iostream>
using namespace std;
void reverse_String(string& greet, int n,int i){
if(n<=i){return;}
swap(greet[i],greet[n]);
reverse_String(greet,n-1,i+1);
}
int main() {
string greeting = "Hello";
cout<<"String before reversal: "<<greeting<<endl;
reverse_String(greeting,greeting.length()-1,0);
cout<<"String after reversal: "<<greeting<<endl;
}

4. Creating a new string

A roundabout method for reversing a string is looping backwards through it and storing the elements in a new string of the same size.

To add elements to an empty string, we can the push_back method.

The code below shows how:

#include <iostream>
using namespace std;
int main() {
string greeting = "Hello";
string new_greeting;
for(int n = greeting.length()-1; n >= 0; n--){
new_greeting.push_back(greeting[n]);
}
cout<<"Original string: "<< greeting << endl;
cout<<"New reversed string: "<< new_greeting << endl;
}
Copyright ©2024 Educative, Inc. All rights reserved