C++/String/string reverse
Содержание
Print characters read from keyboard in reverse order
<source lang="cpp">
/* 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
*/ </source>
Reverse a string in place.
<source lang="cpp">
- 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; }
}
</source>
Reverse the order of all characters inside the string
<source lang="cpp">
- 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
*/ </source>
Reversing an STL String
<source lang="cpp">
- 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;
}
</source>
Reversing a String and Finding its Length
<source lang="cpp">
- 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";
}
</source>
Use a reverse iterator to display the string in reverse
<source lang="cpp">
- 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;
}
</source>