C++中string和char字符串的异同与使用方法
C++中string和char声明字符串的异同和使用
- string类
- 必须在头文件中包含
<string>
- 隐藏了字符串的数组性质,可以像处理普通变量那样处理字符串
- string类位于名称空间std中
- string是一个类,创建出的是一个对象
- 必须在头文件中包含
操作(赋值,拼接,附加)
- 不能将一个数组赋给另一个数组,但可以将一个string对象赋给另一个string对象
char charr1[20];
char charr2[20] = "jaguar";
charr1 = charr2;//此操作不合法(相当于两个首地址的赋值操作)
string str1;
string str2 = "panther";
str1 = str2;//此操作合法
- 可以使用连接运算符"+"将两个string对象合并起来,还可以用"+="将字符串附加到string对象的末尾
- 此处的加号起连接作用,不是做加法的作用
- "+"在第一次碰到string对象之后起连接作用,之前作数字间的加法
string str3;
str3 = str1 + str2;//str3是 str1的内容后紧跟str2的内容 的合并数组。
//对应char字符串的strcpy(charr3,charr1);strcat(charr3,charr2);
str1 += str2;//str1后紧跟str2的内容
- 确定两种字符串中字符数的方法
- char类型字符串可用头文件
<cstring>
中的strlen(字符串名)
函数,该函数返回该字符串包含的字符数,不包含'\0' - string创建的对象可以用
对象名.size()
来确定。string str;
,str是一个string对象,size()是string类的一个方法,方法是一个函数
- char类型字符串可用头文件
输入输出 I/O
-
string字符串在未被初始化前长度被自动设置为0,而char类型的字符串第一个'\0'出现的位置是不确定的,因此,strlen()获取的长度不确定,甚至可以大于中括号中给定的长度
-
可以用cin>>来讲输入存储到string对象中
-
可以使用cout<<来显示string对象
-
每次读取一行而不是一个单词时使用的句法不同
-
读入
-
将一行输入读入数组:
cin.getline(字符数组名,数组长度)
。这个getline()为istream类中的一个类方法,使用第二个参数避免超过数组的长度
-
将一行输入读取到string对象中:
getline(cin,string创建的对象名)
。可见,这个getline()没有句点,表明这个getline()不是类方法,它将cin作为参数,指出到哪里去查找输入,另外,也没有指出字符串长度的参数,因为string对象将根据字符串的长度自己调整自己的大小
istream类中,有处理double,int,和其他基本元素的类方法,但没有处理string对象的类方法
-
cin>>输入一个string对象可行是因为使用string类的一个友元函数
-