标准库类型string表示可变长的字符序列
定义和初始化string对象
不使用等号为直接初始化,使用等号 为拷贝初始化
string对象对大小写敏感。
string s0; // 默认初始化,s1是一个空字符串 string s1(s0); // s1是s0的副本,直接初始化, string s2 = s0; // s2是s1的副本,拷贝初始化 string s3 = "hiya"; // 拷贝初始化 string s4(10, 'c'); // 直接初始化
读取string
cin >> s;
string对象会忽略空白,从第一个真正的字符开始读起,直到遇到下一个空白为止。
读取位置数量的string对象
while (cin >> word);
遇到文件结束标记或非法输入时结束
getline读取一整行
while (getline(cin, line));
读取内容,直到遇到换行符为止(换行符也被都进来了,但是不被存储)line中不包含换行符。
size()
string的size()函数返回string对象的长度,也就是string对象中字符的个数。
string::size_type类型
size()函数返回值为size_type类型,这种类型与机器无关,是一个不小于0的值。
如果n是一个负数,则s.size() < n的结果肯定是true。因为负数n会自动的转换成一个较大的无符号值。
比较string对象
相等:string对象相等则要求两个string对象长度相同,所包含字符也全部相同。
不等:1、长度不等时,如果较短string对象的每个字符都与较长string对象对应位置上的字符相同,则说较短string对象小于较长string对象
2、如果两个string对应位置不一致,string对象比较的结果是string对象第一个相异字符的比较结果
两个string相加
s1 += s2表示把右侧string对象s2的内容追加到左侧string对象s1的后面
字面值与string相加
把string对象和字符字面值及字符串字面值混在一条语句中使用时,必须保证每个加号(+)的两侧运算对象至少有一个是string
string s5 = "Hello" + "World"; // 错误 string s6 = s1 + "," + "Word"; // 正确 string s7 = "Word" + "," + s1; // 错误
string s6 = (s1 + ",") + "Word";
string s7 = ("Word" + ",") + s1;
字符串字面值和string是不同的类型