4、string类
1、使用方法
必须包含#include<string>及using namespace std;
1 char charr1[20]; 2 char charr2[20] = "gao"; 3 string str1; 4 string str2 = "yixue"; 5 cout << "enter charr1:" << endl; 6 cin >> charr1; 7 cout << "enter str1:" << endl; 8 cin >> str1; 9 cout << charr1 << " ,"<<charr2 << "," << str1 << "," << str2 << endl;
2、初始化
string str3{ "I am a girl." }; string str4 = { "I am a student" };
【1】可以使用C风格字符串来初始化string对象
【2】可以使用cin将键盘输入存储到string对象
【3】可以使用cout显示string对象
【4】可以使用数组索引来访问string的字符
【5】如上述代码所示,str1的声明创建一个长度为0的string对象,但将输入读取到str1时,将自动调节str1的长度。
3、赋值、拼接、附加
【1】不能将一个字符数组赋值给另一个字符数组,但可以将一个字符串赋值给另一个字符串。
【2】可以使用运算符+连接两个字符串
【3】C风格字符串使用strcat()和strcpy()实现拼接。
char charr1[20]; char charr2[20] = "gao"; string str1; string str2 = "yixue"; str1 = str2; strcpy(charr1, charr2); str1 += " paste"; strcat(charr1, " paste");
【注】使用字符数组时,总存在目标数组过小,无法存储指定信息的危险。而string具有自动调节大小的功能,从而避免这些问题。
4、string的I/O
char charr[20];
cout << strlen(charr);//结果位置,因为数组未初始化,其内容未知。
//strlen从数组的第一个字符开始计数,知道遇到空字符。
cout << strlen(charr);//结果位置,因为数组未初始化,其内容未知。
//strlen从数组的第一个字符开始计数,知道遇到空字符。
string str;
cout << str.size();//结果是0,未被初始化的string对象的长度被自动设置为0
cout << str.size();//结果是0,未被初始化的string对象的长度被自动设置为0
cin.getline(charr, 20);//此处的getline是istream的一个类方法,cin是istream对象
getline(cin, str);//istream中没有处理string的类方法
getline(cin, str);//istream中没有处理string的类方法
5、原始(raw)字符串
将"( 和 )"用作定界符。
cout << R"(Jim "King" Tutt uses "\n" instead of endl.)" << '\n'; //运行结果:Jim "King" Tutt uses "\n" instead of endl.