C++支持C风格的字符串,另外还提供了一种字符串数据类型:string。string是定义在头文件string中的类,使用前需要包含头文件string。
使用string定义字符串主要有以下几种方式:
#include <string>
using namespace std;
int main()
{
string s1;
s1 = "趣字节,有趣的编程!!!"; //第一种方式,字符串赋值
string s2 = "今天,好好学习了吗?"; //第二种方式,字符串初始化
string s3{"你学废了吗?"}; //第三种方式 ,用字符串构造string
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
return 0;
}
第一种方式先定义了string变量s1,再为string变量s1赋值;第二种方式直接使用“=”为string变量s2赋值;第三种方式在定义string变量时,将初始值放在“{ }”运算符中,使用“{ }”运算符中的字符串为变量初始化;
提示:使用string定义字符串时,不需要担心字符串长度、内存不足等情况,而且string类重载的运算符与成员函数足以完成字符串的各种处理操作。
常见的string字符串操作
1.访问字符串中的字符
string类重载了“[]”运算符,可以通过索引方式访问和操作字符串中指定位置的字符。如下所示:
string s="hello,C++";
s[7]='P';
s[8]='P';
上述代码中,通过索引将字符串s中的两个“+”都修改成了'P'。
2.字符串的连接
在C语言中,连接两个字符串要调用strcat()函数,还要考虑内存溢出情况。在C++中,string重载了“+”运算符,可以使用“+”运算符连接两个string类型的字符串,如下所示:
string s1,s2;
s1="我在学习";
s2="C++";
cout<<s1+s2<<endl; //我在学习C++
3.字符串的比较
在C语言中,比较两个字符串是否相等需要调用strcmp()函数,而在C++中,可以直接使用的“>”,“<”,“==”等运算符比较两个string字符串。如下所示:
string s1,s2;
cin>>s1>>s2;
//比较两个字符串内容是否相同
if(s1>s2)
cout<<"字符串s1大于s2"<<endl;
else if (s1<s2)
cout<<"字符串s2大于s1"<<endl;
else
cout<<"字符串s1与s2相等"<<endl;
4.字符串的长度计算
string类提供的length()函数用于获取字符串长度。length()函数类似于C语言中的strlen()函数。调用length()函数获取字符串长度,如下所示:
#include <string>
using namespace std;
int main()
{
string s = "hello C++";
cout << "长度:" << s.length() << endl;
return 0;
}
由于计算结果不包括字符串末尾结束标志符“\0”,因此,字符串s的长度为9。
5.字符串交换
string类提供了成员函数swap(),用于交换两个字符串的值,示例代码如下所示:
string s1="hello C++";
string s2="I Love China!";
s1.swap(s2); //通过“.”运算符方式交换
swap(s1,s2); //通过函数调用方式交换
需要注意的是,string的成员函数swap()只能交换string类型的字符串,不能交换C语言风格的字符串。