标准库类型string,是可变长度的字符序列,支持字符串间的复制、比较、连接,还支持字符串长度查询和是否为空的判断,并且可以访问其中的单个字符。
使用它需要头文件<string>。
1.字符串的连接:
s1=s1+s2; //将字符串2接在字符串1后面,后面可以是以双引号引起来的非string类型的字符串,但是必须至少存在一个string类型的对象。
s1+=s2;//这种运算符都可以使用。
2.字符串长度查询:
利用s.size()的方法可以查询字符串s的长度。因为string也算标准库类型(stl)中的一个,所以也要使用s.的形式。
4.访问其中的单个字符:
像是普通的数组一样,string类型也可以用s[i]的方法来访问字符串s中的第i个字符。
需要注意的是,数组下标的类型并不仅仅是整型,所以在定义下标时,可以使用size_t来定义,例如:
for(size_t i=1;i<=s.size();i++)
还有一种设置方式:string::size type n; s[n];
5.初始化string类型字符串
string s("hello"); / string s="hello";
string s2(s1) / string s2=s1; //都是拓建一个s1的副本s2,s2的内容等于s1的内容。
string s4(n,'c'); //初始化为由n个c构成的字符串s4。
6.判断字符串是否为空。
与一般的stl相同,只需要使用s.empty()即可。空则返回true,非空则返回false。
7.字符串之间的比较
使用>、<、>=、<=、!=、==等关系运算符即可判断。字符串之间的大小比较是按字典序来比较的,并且区分大小写(特别是判断==的时候)。
8.string类型的数组(???反正就是二维string)
string[n]可以开n列string类型。一列可以存一个字符串。
这样的二维string可以使用sort()进行排序,也是按照字典序进行排序的。
输入string时,可以用cin和getline输入。
">>"输入只能输入一个单词,不能输入空白字符,所以即使用while(cin>>s),也只能保存最后一个单词在s中。
getline(cin,s)可以输入一行字符直到遇到换行符,输出时也输出空格。
用while()输入可以输入至文件末尾EOF(有篇博客说EOF是C函数的返回值,NULL是文件末尾)。wendows可以用Ctrl+z来结束输入。
字符串"hello"是字面值,不是string类型,而是const char*,他们能用<cstring>中的函数,但是string不能使用。用c_str()操作可以将string转换为字符串字面值:s.c_str()。