C++字符串操作:string类与数组对比
1、使用string类时,某些操作比使用数组更加简单。例如,不能将一个数组赋值到另一个数组,但是可以将一个string类对象赋值给另一个string类对象,例如:
char charr1[20];
char charr2[20]="jaguar";
string str1;
string str2="panther";
str1=str2;
string类简化了字符串合并操作。可以使用运算符+将两个string对象合并在一起,还可以使用运算符+=将字符串附加到string对象的末尾。例如,使用上面的代码,
string str3=str1+str2;
str1+=str2;
2、string类的其他操作们
对于字符串的行输入,字符数组和string类字符串有不同的使用方法。首先是字符数组如何进行行输入,字符数组进行行输入需要使用cin.getline()函数,这个函数有两个参数,一个是字符数组名,另一个是能进行输入的最大输入字符量。下面是示例:
#include<iostream>int main()
{char str[100];cout << "请输入一行文本:";cin.getline(str, 100);cout << "你输入的是:" <<str<< endl;return 0;
}
下面是输出结果:
请输入一行文本:The diamond is really cool.
你输入的是:The diamond is really cool.
讲解了字符数组的行输入方法,下来就是string类字符串的行输入方法了。这里需要用到一个getline()函数,这里遇上面的函数不同,这个函数的参数一个是cin,另一个则是string类字符串的名称,例如下面这样:
#include<iostream>
#include<string>int main()
{string arr;cout << "请输入一段文本:" << endl;getline(cin, arr);cout << "你输入的文本是:" << arr << endl;return 0;}
输出结果是:
请输入一段文本:
I have some delicious food.
你输入的文本是:I have some delicious food.
不过要注意的是在进行行输入之前,一定要先看看前面有没有cin>>进行输入,如果有,请一定要先做如下操作:
cin>>a;
cin.ignore().
然后在通过getline()函数行输入。恨过人就会有疑问了,为什么要这么做呢,这是因为在cin>>进行输入后,编译器只会字符提取到输入流中去,而最后的换行符就会被留在缓冲区,等待下一次输入,如果不清理掉换行符,则行输入会显示空白,导致输入失败,所以要先清理才行。最后一点是在字符数组行输入时不要超过最大输入字符输,否则导致输入不完全。