c++支持两种类型的字符串,第一种是c语言中介绍过的,包括一个结束符‘\0’(即以NULL结束)的字符数组,标准库函数提供了一组对其进行操作的函数,可以完成许多常用的字符串操作,如字符串复制函数strcpy,字符串连接函数strcat和求字符串长度函数strlen等。c++仍保留了这种格式字符串。使用数组来存放字符串,调用标准库函数来处理字符串,使用起来不太方便,而且数据与处理数据的函数分离也不符合面向对象方法的要求。为此,在c++标准库中,声明了一种更方便的字符串类型,即字符串类string,类string提供了对字符串进行处理所需要的操作。
使用string类必须在程序的开始包括头文件string,即有以下语句:
#include<string>
string类的字符串对象的使用方法和其他对象一样,也必须先定义才可以使用。其定义格式如下:
string 对象1,对象2.......
例如
string str1,str2;
string str3("china");
字符串的初始化也可以写成:
string str4="china";
同时,c++也为string类的对象定义了许多应用于字符串的运算符,常用的字符串运算符如下:
运算符 示例
= s1=s2
+ s1+s2
+= s1+=s2
== s1==s2
!= s1!=s2
< s1<s2
> s1>s2
<= s1<=s2
>= s1>=s2
[] s1[i] 访问字符串对象s1中下标为i的字符
>> cin>>s1 从键盘中输入一个字符串给串对象s1
<< cout<<s1 将串对象s1 输出
这些运算符允许在一般表达式中使用string类对象,而不再需要调用诸如strcpy或strcat之类的函数。同时,也可以在表达式中把类对象string和以‘\0’结束的字符串混合在一起使用,例如可以把一个以‘\0’结束的字符串赋给一个string类对象。
c++中string类的使用使得字符串的处理比使用字符串函数更直观,方便。下面是例子:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str1="ABC";
string str2="DEF";
string str3("GHI");
string str4,str5;
str4=str1;
cout<<"str4 is "<<str4<<endl;
str5=str1+str2;
cout<<"str1+str2 is "<<str5<<endl;
str5=str1+"123";
cout<<"str1+\"123\" is "<<str5<<endl; \\这里采用了转义字符 \” 表示的是双撇号字符;
if(str3>str1)
{
cout<<"str3>str1"<<endl;
}
else
cout<<"str3<=str1"<<endl;
if(str4==str1)
{
cout<<"str4==str1"<<endl;
}
else
cout<<"str4<>str1"<<endl;
cin>>str5;
cout<<"str5 is "<<str5<<endl;
return 0;
}