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.
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.
C++ has an in-built reverse
function, that can be called to reverse a string. This function takes in two inputs;
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 argumentsreverse(greeting.begin(),greeting.end());cout<<greeting<<endl;}
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
andn
are the same. The while loop shows this condition more explicitly.
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;}
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;}