string类型支持长度可变的字符串。
1. string对象的定义和初始化
string s1; //默认构造函数,s1为空串
string s2(s1); //将s2初始化为s1的一个副本
string s3(“value”); //将s3初始化为一个字符串字面值副本
string s4(n, ‘c’); //将s4初始化为字符‘c’的n个副本
2.string对象的读写
(1) 用输入操作符来读取string对象
cin >> s,规则是:读取并忽略开头所有的空白字符(如空格,换行符,制表符等);读取字符直至再次遇到空白字符,读取终止。
示例:
string s;
while ( cin >> s )
cout << word << endl;
(2)用getline读取整行文本
getline(cin,s),该函数接受两个参数:一个输入流对象和一个string对象。getline并不忽略行开头的换行符。
while ( getline(cin, s) )
cout << line <<endl;
无可避免的,这两种方式都要遇见处理空白字符的情况。其中,string类型的输入操作符对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符扔留在输入流中);而getline函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在string对象中)。
3. string 对象的操作
s.empty(); //判断字符串是否为空,若空返回true,否则返回false
s.size(); // 返回s中的字符个数
s[n]; // 返回s中位置为n的字符, 位置从0开始计数
string s1, s2;
s1 + s2; // 将s1和s2连接成一个新字符串,返回新生成的字符串
s1 = s2; // 把s1内容替换为s2的副本
s1 == s2; // 比较两个字符串的内容,相等则返回true,否则返回false