| | |
Playing around with std::string
Please support our C++ advertiser: Intel Parallel Studio Home
You can have fun and learn something too. Not too much fun though! Here we take a lighthearted look at C++ string, various ways to assign a string and substring, spell forward and reverse, find characters and substrings, append, insert, replace, remove characters, separate a sentence into words and more.
// testing std::string // a Dev-C++ challenged Console Application by vegaseat 19dec2004 #include <iostream> #include <string> using namespace std; // std::string int main() { int k, n; // assign a string string s1 = "What is the difference between roast beef and pea soup?"; cout << s1 << endl << endl; // use \" for embedded double quotes string s2 = "<tr><td><img src=\"naomi.bmp\"></td><td><b>"; cout << s2 << endl << endl; // for a multiline assignment use \ to connect string s3 = "If you tell a lie long enough\n\ and often enough,\n\ it becomes the truth!"; cout << s3 << endl << endl; // assign a substring from source to target // starting at index = 8 and len = 3 characters long string target; string source = "No new taxes!"; target.assign(source, 8, 3); cout << source << endl; cout << target << endl; // displays axe // spell out the above string string::const_iterator ai; // spell forwards for(ai = source.begin(); ai != source.end(); ai++) { cout << *ai << ' '; // separate with a space } cout << endl; // spell in reverse for(ai = source.end() - 1; ai != source.begin() - 1; ai--) { cout << *ai << ' '; // separate with a space } cout << endl << endl; // assign num = 50 characters '!' to a string string hey; hey.assign(50,'!'); cout << hey << endl; // append hey to source source.append(hey); cout << source << endl << endl; // add marker for(k = 0, n = 0; k < 18; k++, n++) { if (n > 9) n = 0; cout << n; } cout << endl; string text = "There was nobody at the Missing Persons' Bureau"; cout << text << endl; // return the character at position 0 and 15 of text char ch = text.at(0); cout << "Character at position 0 = " << ch << endl; ch = text.at(15); cout << "Character at position 15 = " << ch << endl; // size() same as length() cout << "size = " << text.size() << " capacity = " << text.capacity(); cout << endl << endl; // copy num = 17 char of oldstr into newstr starting at index = 0 string oldstr = "Frank is very fatherly!"; // why not a little old stuff char newstr[80] = {0}; oldstr.copy(newstr, 17, 0); cout << oldstr << endl; cout << newstr << endl << endl; // add marker for(k = 0; k < 10; k++) { cout << k; } cout << endl; // removes num = 6 characters from the current string // starting at index = 23 string sd("A really stupid person never becomes senile!"); cout << sd << endl; sd.erase(23, 6 ); cout << sd << endl << endl; // return first occurrence of "stupid" within the current string // starting at index = 0, string::npos (-1) if nothing is found int pos = sd.find( "stupid", 0 ); if ( pos != string::npos ) { cout << "stupid is at index " << pos; } else { cout << "Didn't find stupid"; } cout << endl; // doing a reverse search from index, string::npos = fail (-1) pos = sd.rfind( "smart", 15 ); cout << "smart is at index " << pos << " (fail=-1)" << endl << endl; // inserts str2 into str1 at locations 11 and then 20 string str1 = "Judges live on income"; string str2 = " fixed"; str1.insert(11, str2); str1.insert(20, str2); cout << str1 << endl; // add ! to the end str1.push_back('!'); cout << str1 << endl << endl; // replace characters of tooth string with num (here length) // characters from teeth string, beginning at index 21 string tooth = "He ate it all with a toothpick"; cout << tooth << endl; string teeth = "teethpick"; tooth.replace( 21, teeth.length(), teeth ); cout << tooth << endl << endl; // return a substring of a string starting at index = 19 string str("They will greet us with flowers!"); string sub = str.substr(19); cout << "original string : " << str << endl; cout << "substring from 19 on : " << sub << endl; // change the size of string to num = 18 characters str.resize(18); cout << "resize to 18 char : " << str << endl; // dito, but pad excess (here past 18) with char '!' str.resize(21,'!'); cout << "resize with ! padding: " << str << endl << endl; // swap strings string first( "one, uno, eins, interesting lines" ); string second( "two, dos, zwei, cake-flavored pie" ); cout << "Before swap:" << endl; cout << "first = " << first << endl; cout << "second = " << second << endl << endl; first.swap( second ); cout << "After swap:" << endl; cout << "first = " << first << endl; cout << "second = " << second << endl << endl; // use at() and substr() to separate a string s1 into words cout << s1 << endl << endl; // show s1 in case you forgot int start = 0; // add a space to the end of s1 since this is our delimiter // this allows us to catch the last word properly s1.push_back(' '); for(k = 0; k < s1.size(); k++) { // found a space now show the word before that if (s1.at(k) == ' ') { // substr(startposition, length) cout << s1.substr(start, k - start) << endl; // update to new startposition start = k + 1; } } cout << endl; cout << "Anyone can roast beef!" << endl; cin.get(); // wait return 0; }
Similar Threads
- Convert Custom type 'String' to std::string (C++)
- convert char** (c string array) to std::string[] (C++)
- std::copy a std::vector of std::pair to std::cout (C++)
- error: no matching function for call to 'getline(std::ofstream&, std::string&, char)' (C++)
- no matching function for call to 'strcmp(std::string&, std::string&)' (C++)
| Thread Tools | Search this Thread |
api array arrays beginner binary bitmap c++ c/c++ calculator char char* class classes coding compile compiler console conversion convert count data database delete desktop developer directshow dll dynamiccharacterarray email encryption error file forms fstream function functions game generator getline google graph homeworkhelper iamthwee ifstream input int integer java lib linkedlist linux list loop looping loops map math matrix memory multiple news node number numbertoword output parameter pointer problem program programming project proxy python random read recursion recursive reference return rpg sorting string strings struct template templates test text tree unix url vector video visualstudio win32 windows winsock word wordfrequency wxwidgets



