开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
string
表示可变长的字符序列
#include <string> //包含string头文件
using std::string; //string包含在命名空间std中
初始化string
对象
string
可以直接初始化,也可以拷贝初始化
string s1; //默认初始化,s1是空串
string s2(s1); //s2是s1的副本
string s2 = s1; //和上述等价
string s3("value"); //s3是字面量“value”的副本,除了最后的空字符外
string s3 = "value"; // 和上述等价
string s4(n,'c'); // s4初始化为又连续n个字符c组成的字符串
初始化方式区别
-
使用等号初始化一个变量,执行的是拷贝初始化
编译器会把等号右边的值拷贝到新创建的对象中
-
不使用等号,则执行直接初始化
只有一个值,使用二者都可以
初始化需要多个值时,一般来说只能使用直接初始化
string s5 = “hello"; // 拷贝初始化
string s6("hello"); // 直接初始化
string s7(10,'h'); //直接初始化
string的操作方法
-
读写
string
通过输入输出流,输出
string
到输出流或者输入流,输入数据到string
string s; cin >> s; //输入数据到s中 cout << s ; //输出s
读写时,
string
对象会自动忽略开头的空白(即空格符、换行符、制表符等)并从第一个真正的字符开始读起,直到遇见下一处空白为止
-
读取一整行
getline()
会每次读取一整行,读取直到一行的末尾- 和
>>
区别:会保留输入时的空白符 geline()
返回的字符串不包含最后的换行符,被丢弃了
- 和
-
获取
string
长度和判空empty()
函数判空,空则返回true
-
size()
函数返回string
的长度,返回值是string::size_type
类型string::size_type
是一个无符号类型的值- 可以使用
auto
或者decltype
代替string::size_type
,用以做类型推断 - 不要混用
int
和string::size_type
,相当于混用了无符号和有符号类型的数据,可能会产生非预期效果
-
string
比较-
string
比较都是对大小写敏感的- 如果长度一样,较短的每个字符都和较长的对应位置一致,那么较短的就小于较长的
string
- 如果对应位置字符不一致,则比较的结果就是第一对相异的字符的比较结果
-
-
string
相加-
string
对象相加,结果就是将string右边的字符串进行拼接string s1 = "hello,"; string s2 = "world"; string s3 = s1+s2; //s3就是 “hello,world ”
-
字面量相加
如果都是字面量直接相加是错误的,字面量的左右,至少要有一个是string对象
string s = "hello," + "world"; //错误 string s1 = "hi,"; string s2 = s1+ "你好"; //正确 string s4= "hello," + "world" + s1; //错误,好比("hello," + "world“) + s1,两个字面量在相加 string s2 = "hello," + s1 + "world" //正确
-
字符处理方法
都定义在cctype
头文件中,详细见图,就不过多介绍了