首页 > 编程笔记

C++ string字符串的用法

C语言不存在字符串类型,都是用字符数组处理字符串,C++ 支持C风格的字符串,另外还提供了一种字符串数据类型:string

string 是定义在头文件 string 中的类,使用前需要包含头文件 string。

使用 string 定义字符串比较简单,主要有以下几种方式:

string s1;
s1="hello C++";    //第一种方式
string s2="hello C++";    //第二种方式
string s3("hello C++");    //第三种方式
string s4(6,'a');    //第四种方式

对上述几种方式的说明:
上述代码最后一行,表示用 6 个字符 'a' 构成的字符串初始化变量 s4,初始化后 s4 的值为" aaaaaa"。

注意:使用 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() 函数获取字符串长度的示例代码如下所示:

string s="hello C++";
cout<<"length():"<<s.length()<<endl;

需要注意的是,由于计算结果不包括字符串末尾结束标志符“\0”,因此,上述代码使用 length() 函数计算出字符串 s 的长度为 9。

5) 字符串交换

string 类提供了成员函数 swap(),用于交换两个字符串的值,示例代码如下所示:

string s1="hello C++";
string s2="I Love China!";
s1.swap(s2);     //通过“.”运算符方式交换
swap(s1,s2);     //通过函数调用方式交换

需要注意的是,string 的成员函数 swap() 只能交换 string 类型的字符串,不能交换C语言风格的字符串。

优秀文章