Note09--String
来源:互联网 发布:windows curl命令详解 编辑:程序博客网 时间:2024/05/16 08:52
书:C++大学教程(第七版)
1. getline(cin, string1);
从键盘上读取一个字符串到string1.输入用一个换行符结束,所以getline函数可以读取一行文本到一个string类对象中。
#include <iostream>#include <string>using namespace std;int main(){ string string1( "cat" ); string string2; // initialized to the empty string string string3; // initialized to the empty string string2 = string1; // assign string1 to string2 string3.assign( string1 ); // assign string1 to string3 cout << "string1: " << string1 << "\nstring2: " << string2 << "\nstring3: " << string3 << "\n\n"; // modify string2 and string3 string2[ 0 ] = string3[ 2 ] = 'r'; cout << "After modification of string2 and string3:\n" << "string1: " << string1 << "\nstring2: " << string2 << "\nstring3: "; // demonstrating member function at for ( int i = 0; i < string3.length(); i++ ) cout << string3.at( i ); // declare string4 and string5 string string4( string1 + "apult" ); // concatenation string string5; // overloaded += string3 += "pet"; // create "carpet" string1.append( "acomb" ); // create "catacomb" // append subscript locations 4 through end of string1 to // create string "comb" (string5 was initially empty) string5.append( string1, 4, string1.length() - 4 ); cout << "\n\nAfter concatenation:\nstring1: " << string1 << "\nstring2: " << string2 << "\nstring3: " << string3 << "\nstring4: " << string4 << "\nstring5: " << string5 << endl;} // end main
- 字符串比较compare
string string1( "Testing the comparison functions." ); string string2( "Hello" ); string string3( "stinger" ); string string4( string2 ); cout << "string1: " << string1 << "\nstring2: " << string2 << "\nstring3: " << string3 << "\nstring4: " << string4 << "\n\n"; // comparing string1 and string4 if ( string1 == string4 ) cout << "string1 == string4\n"; else // string1 != string4 { if ( string1 > string4 ) cout << "string1 > string4\n"; else // string1 < string4 cout << "string1 < string4\n"; } // end else // comparing string1 and string2 int result = string1.compare( string2 ); if ( result == 0 ) cout << "string1.compare( string2 ) == 0\n"; else // result != 0 { if ( result > 0 ) cout << "string1.compare( string2 ) > 0\n"; else // result < 0 cout << "string1.compare( string2 ) < 0\n"; } // end else // comparing string1 (elements 2-5) and string3 (elements 0-5) result = string1.compare( 2, 5, string3, 0, 5 ); if ( result == 0 ) cout << "string1.compare( 2, 5, string3, 0, 5 ) == 0\n"; else // result != 0 { if ( result > 0 ) cout << "string1.compare( 2, 5, string3, 0, 5 ) > 0\n"; else // result < 0 cout << "string1.compare( 2, 5, string3, 0, 5 ) < 0\n"; } // end else // comparing string2 and string4 result = string4.compare( 0, string2.length(), string2 ); if ( result == 0 ) cout << "string4.compare( 0, string2.length(), " << "string2 ) == 0" << endl; else // result != 0 { if ( result > 0 ) cout << "string4.compare( 0, string2.length(), " << "string2 ) > 0" << endl; else // result < 0 cout << "string4.compare( 0, string2.length(), " << "string2 ) < 0" << endl; } // end else // comparing string2 and string4 result = string2.compare( 0, 3, string4 ); if ( result == 0 ) cout << "string2.compare( 0, 3, string4 ) == 0" << endl; else // result != 0 { if ( result > 0 ) cout << "string2.compare( 0, 3, string4 ) > 0" << endl; else // result < 0 cout << "string2.compare( 0, 3, string4 ) < 0" << endl; } // end else
- 子字符串substr: string1.substr(7, 5)
- 交换字符串:first.swap(second)
- 查找字符串中的字串和字符
string string1( "noon is 12 pm; midnight is not." ); int location; // find "is" at location 5 and 24 cout << "Original string:\n" << string1 << "\n\n(find) \"is\" was found at: " << string1.find( "is" ) << "\n(rfind) \"is\" was found at: " << string1.rfind( "is" ); // find 'o' at location 1 location = string1.find_first_of( "misop" ); cout << "\n\n(find_first_of) found '" << string1[ location ] << "' from the group \"misop\" at: " << location; // find 'o' at location 29 location = string1.find_last_of( "misop" ); cout << "\n\n(find_last_of) found '" << string1[ location ] << "' from the group \"misop\" at: " << location; // find '1' at location 8 location = string1.find_first_not_of( "noi spm" ); cout << "\n\n(find_first_not_of) '" << string1[ location ] << "' is not contained in \"noi spm\" and was found at: " << location; // find '.' at location 12 location = string1.find_first_not_of( "12noi spm" ); cout << "\n\n(find_first_not_of) '" << string1[ location ] << "' is not contained in \"12noi spm\" and was " << "found at: " << location << endl; // search for characters not in string1 location = string1.find_first_not_of( "noon is 12 pm; midnight is not." ); cout << "\nfind_first_not_of(\"noon is 12 pm; midnight is not.\")" << " returned: " << location << endl;
- 在字符串中替换字符
string string1( "The values in any left subtree" "\nare less than the value in the" "\nparent node and the values in" "\nany right subtree are greater" "\nthan the value in the parent node" ); cout << "Original string:\n" << string1 << endl << endl; // remove all characters from (and including) location 62 // through the end of string1 string1.erase( 62 ); // output new string cout << "Original string after erase:\n" << string1 << "\n\nAfter first replacement:\n"; int position = string1.find( " " ); // find first space // replace all spaces with period while ( position != string::npos ) { string1.replace( position, 1, "." ); position = string1.find( " ", position + 1 ); } // end while cout << string1 << "\n\nAfter second replacement:\n"; position = string1.find( "." ); // find first period // replace all periods with two semicolons // NOTE: this will overwrite characters while ( position != string::npos ) { //用"xxxxx;;yyy"中从第五个位置开始连续两个字符替换string1中从position开始连续两个字符 string1.replace( position, 2, "xxxxx;;yyy", 5, 2 ); position = string1.find( ".", position + 1 ); } // end while cout << string1 << endl;
- 插入字符
string string1( "beginning end" ); string string2( "middle " ); string string3( "12345678" ); string string4( "xx" ); cout << "Initial strings:\nstring1: " << string1 << "\nstring2: " << string2 << "\nstring3: " << string3 << "\nstring4: " << string4 << "\n\n"; // insert "middle" at location 10 in string1 string1.insert( 10, string2 ); // insert "xx" at location 3 in string3 string3.insert( 3, string4, 0, string::npos ); cout << "Strings after insert:\nstring1: " << string1 << "\nstring2: " << string2 << "\nstring3: " << string3 << "\nstring4: " << string4 << endl;
- 转换成C风格的char *字符串
string string1( "STRINGS" ); // string constructor with char* arg const char *ptr1 = 0; // initialize *ptr1 int length = string1.length(); char *ptr2 = new char[ length + 1 ]; // including null // copy characters from string1 into allocated memory string1.copy( ptr2, length, 0 ); // copy string1 to ptr2 char* ptr2[ length ] = '\0'; // add null terminator cout << "string string1 is " << string1 << "\nstring1 converted to a C-Style string is " << string1.c_str() << "\nptr1 is "; // Assign to pointer ptr1 the const char * returned by // function data(). NOTE: this is a potentially dangerous // assignment. If string1 is modified, pointer ptr1 can // become invalid. ptr1 = string1.data(); // output each character using pointer for ( int i = 0; i < length; i++ ) cout << *( ptr1 + i ); // use pointer arithmetic cout << "\nptr2 is " << ptr2 << endl; delete [] ptr2; // reclaim dynamically allocated memory
- 迭代器
string string1( "Testing iterators" ); string::const_iterator iterator1 = string1.begin(); cout << "string1 = " << string1 << "\n(Using iterator iterator1) string1 is: "; // iterate through string while ( iterator1 != string1.end() ) { cout << *iterator1; // dereference iterator to get char iterator1++; // advance iterator to next char } // end while cout << endl;
- istringstream和ostringstream
类istringstream支持从字符串输入,类ostringstream支持输出到一个字符串。
类名istringstream和ostringstream实际上是由typedef定义的别名:
typedef basic_istringstream< char > istringstream; typedef basic_ostringstream< char > ostringstream; ostringstream outputString; // create ostringstream instance string string1( "Output of several data types " ); string string2( "to an ostringstream object:" ); string string3( "\n double: " ); string string4( "\n int: " ); string string5( "\naddress of int: " ); double double1 = 123.4567; int integer = 22; // output strings, double and int to ostringstream outputString outputString << string1 << string2 << string3 << double1 << string4 << integer << string5 << &integer; // call str to obtain string contents of the ostringstream cout << "outputString contains:\n" << outputString.str(); // add additional characters and call str to output string outputString << "\nmore characters added"; cout << "\n\nafter additional stream insertions,\n" << "outputString contains:\n" << outputString.str() << endl; string input( "Input test 123 4.7 A" ); istringstream inputString( input ); string string1; string string2; int integer; double double1; char character; inputString >> string1 >> string2 >> integer >> double1 >> character; cout << "The following items were extracted\n" << "from the istringstream object:" << "\nstring: " << string1 << "\nstring: " << string2 << "\n int: " << integer << "\ndouble: " << double1 << "\n char: " << character; // attempt to read from empty stream long value; inputString >> value; // test stream results if ( inputString.good() ) cout << "\n\nlong value is: " << value << endl; else cout << "\n\ninputString is empty" << endl;
- 字符串的赋值和连接
(1) 提供了重载的运算符=和成员函数assign来对字符串进行复制;
(2) 下标运算符[]提供对一个字符串的任何元素的读/写访问;
(3) 成员函数at提供溢出检查,超出字符串的任意边界都将抛出out_of_range异常。下标运算符[]不提供溢出检查;
(4) 类提供重载的+和+=运算符以及成员函数append来执行字符串的连接操作;
0 0
- Note09--String
- Note09--Filter
- string
- String
- String
- string
- string
- String
- string
- String
- string
- string
- string
- string
- String
- String
- string
- string +
- 前端跨域问题
- 当客户说 “这里有点问题,我想要这样的...”,后面的事你造吗
- 在当前活动返回上一个活动详解
- 【Codeforces 757 Bash's Big Day】+ 手速
- 笔试题9. LeetCode OJ (9) Arithmetic Slices
- Note09--String
- 唐朝CTO,杨潜
- 【ife】任务四十五:多功能相册之木桶布局
- tomcat启动提示端口被占用 maven项目 java.lang.ClassNotFoundException: org.springframework.web.servlet.Dispatche
- Note10
- 浅谈特征选择和特征抽取
- JMS入门及简单例子
- Java基础-day01-常见的DOS命令
- Codeforces 456C Boredom DP