C++/String/string reverse
Содержание
Print characters read from keyboard in reverse order
/* The following code example is taken from the book
* "The C++ Standard Library - A Tutorial and Reference"
* by Nicolai M. Josuttis, Addison-Wesley, 1999
*
* (C) Copyright Nicolai M. Josuttis 1999.
* Permission to copy, use, modify, sell and distribute this software
* is granted provided this copyright notice appears in all copies.
* This software is provided "as is" without express or implied
* warranty, and with no claim as to its suitability for any purpose.
*/
#include <iostream>
#include <string>
using namespace std;
int main (int argc, char** argv)
{
const string delims(" \t,.;");
string line;
// for every line read successfully
while (getline(cin,line)) {
string::size_type begIdx, endIdx;
// search beginning of the first word
begIdx = line.find_first_not_of(delims);
// while beginning of a word found
while (begIdx != string::npos) {
// search end of the actual word
endIdx = line.find_first_of (delims, begIdx);
if (endIdx == string::npos) {
// end of word is end of line
endIdx = line.length();
}
// print characters in reverse order
for (int i=endIdx-1; i>=static_cast<int>(begIdx); --i) {
cout << line[i];
}
cout << " ";
// search beginning of the next word
begIdx = line.find_first_not_of (delims, endIdx);
}
cout << endl;
}
}
/*
asdf; asdf;
fdsa fdsa
asdf
fdsa
asdf
fdsa
Terminate batch job (Y/N)? n
*/
Reverse a string in place.
#include <iostream>
#include <cstring>
using namespace std;
void revstr(char *str);
int main() {
char str[] = "abcdefghijklmnopqrstuvwxyz";
cout << "Original string: " << str << endl;
revstr(str);
cout << "Reversed string: " << str << endl;
return 0;
}
// Reverse a string in place.
void revstr(char *str) {
int i, j;
char t;
for(i = 0, j = strlen(str)-1; i < j; ++i, --j) {
t = str[i];
str[i] = str[j];
str[j] = t;
}
}
Reverse the order of all characters inside the string
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
const string hello("Hello, how are you?");
string s(hello.begin(),hello.end());
// iterate through all of the characters
string::iterator pos;
for (pos = s.begin(); pos != s.end(); ++pos) {
cout << *pos;
}
cout << endl;
reverse (s.begin(), s.end());
cout << "reverse: " << s << endl;
}
/*
Hello, how are you?
reverse: ?uoy era woh ,olleH
*/
Reversing an STL String
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
int main ()
{
string strSample ("Hello String! ");
cout << strSample << endl;
reverse (strSample.begin (), strSample.end ());
cout << strSample;
return 0;
}
Reversing a String and Finding its Length
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main( )
{
string adage( "this is a test" );
cout << adage;
cout << adage.length() << " letters";
// equivalent of strrev()
reverse( adage.begin(), adage.end() );
cout << "\n\nReversed string: " << adage;
cout << "\nThe reversed string has " << adage.length() << " letters";
}
Use a reverse iterator to display the string in reverse
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
string strA("This is a test.");
string::reverse_iterator ritr;
for(ritr = strA.rbegin(); ritr != strA.rend(); ++ritr)
cout << *ritr;
return 0;
}