一、声明
string是一种类,包含数据和类函数。数据是字符数组。
声明string对象的时候不需要指定数组的长度,直接写名字即可
格式
string 对象名;
二、初始化
string类支持用大括号或双引号进行初始化
string str1 = {'a','b','c','d'};
string str2 = "Hello world!";
三、将输入的字符串存入
格式
cin>>str1;
经测试已确认:
1、遇到空格或者回车,字符串读入结束,回车和空格不在最终结果中,不知道是存入后被换成'\0',还是压根就没读进去,直接在结尾后加'\0'。
2、缓冲区的回车或空格没有了,也就是说,如果连续使用cin获取字符串,不需要处理掉上一个字符串结束时留下的回车,连续cin即可。
要想将空格读入字符串,可采用下面的方法
getline(cin,str);
第一个参数表示在输入流中寻找输入字符串的内容,第二个参数表示将字符串存入的目的地。
四、字符串连接和赋值
string类连接和赋值的方法比较奇特
连接:
str3 = str1 + str2;
直接在str1末尾去掉'\0',然后把str2接上,中间没有空格和换行。
上面一个例子可以发现,string类可以直接用等号赋值,而字符串和数组是不可以直接用名字来赋值的。
格式
str2 = str1;
str1覆盖str2的内容,长度也变成str1的长度。
五、string类对象的输出
支持下列格式
cout<<str1;
cout<<str1<<str2;//str1和str2之间不会添加空格和回车
cout<<(str1 + str2);
六、string类中的一个类函数——size()
类中包含类函数。
调用类函数的方法:对象名.函数名()
size类函数用于返回字符串的长度
例:获取str1的长度
int a = str1.size(); //将str1的长度(元素个数)赋值给a
也可以对连接后的字符串使用,获得连接后字符串的长度
(str1 + str2 ).size();
我理解是str1 + str2的记过还是string类对象,这句话等效于
string str3 = str1 + str2;
str3.size();