[C++] 标准库类型string

标准库类型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是不同的类型

原文地址:https://www.cnblogs.com/immjc/p/8028247.html