C++支持C风格的字符串,另外还提供了一种 字符串数据类型:string是定义在头文件string中的类,使用前需要包含头文件string。
#include
C语言中的字符串需要引用头文件#include
#include
值得注意的是,在c++中头文件中都没有.h
//C++风格
int main()
{
string s1;//第一种方式,字符串赋值
s1 = "hello c++";
string s2 = "今天,好好学习了吗?"; //第二种方式,字符串初始化
string s3{ "你学废了吗?"}; //第三种方式 ,用字符串构造string
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
return 0;
}
1.访问字符串中的字符
string类重载了“[]”运算符,可以通过索引方式访问和操作字符串中指定位置的字符。如下所示:
//string类重载了“[]”运算符,可以通过索引方式访问和操作字符串中指定位置的字符。如下所示:
//C++
int main()
{
string s = "hello,C++";
cout << s << endl;
s[7] = 'P';//通过下标访问第七个元素
s[8] = 'P';
cout << s << endl; //hello,Cpp
return 0;
}
//C语言
int main()
{
char s[] = "hello,C++";
printf("%s\n", s);
s[7] = 'p';
s[8] = 'p';
printf("%s\n", s);
return 0;
}
2.字符串连接
在C语言中,连接两个字符串要调用strcat()函数,还要考虑内存溢出情况。在C++中,string重载了“ + ”运算符,可以使用“ + ”运算符连接两个string类型的字符串,如下所示:
//C++写法
int main()
{
string s1, s2;
s1 = "我在学习";
s2 = "C++";
cout << s1 + s2 << endl; //我在学习C++
return 0;
}
//C写法
int main()
{
char s1[15] = "我在学习";
char s2[15] = "C++";
strcat(s1, s2);
printf("%s", s1);
return 0;
}
3.字符串的比较(注意比较的不是长度,而是字母的大小)
在C语言中,比较两个字符串是否相等需要调用strcmp()函数,而在C++中,可以直接使用的“ > ”, “ < ”, “ == ”等运算符比较两个string字符串。如下所示:
//C++
int main()
{
string s1, s2;
s1 = "hello";
s2 = "world";
//比较两个字符串内容是否相同
if (s1 > s2)
cout << "字符串s1大于s2" << endl;
else if (s1 < s2)
cout << "字符串s2大于s1" << endl;
else
cout << "字符串s1与s2相等" << endl;
}
//C语言
int main()
{
char s1[10] = "hello";
char s2[10] = "world";
//比较两个字符串内容是否相同
if (strcmp(s1 ,s2)>0)
printf("字符串s1大于s2");
else if (strcmp(s1 , s2))
printf("字符串s2大于s1");
else
printf("字符串s1与s2相等");
}
4.字符串的长度计算
string类提供的length()函数用于获取字符串长度。length()函数类似于C语言中的strlen()函数。调用length()函数获取字符串长度, 如下所示:
int main()
{
string s = "hello C++";
cout << "长度:" << s.length() << endl;//9
return 0;
}
5.字符串交换
string类提供了成员函数swap(),用于交换两个字符串的值,示例代码如下所示:
int main()
{
string s1 = "hello";
string s2 = "world";
cout << "交换前" << s1 << " " << s2 << endl;
//s1.swap(s2); //交换s1与s2的内容
swap(s1, s2);
cout << "交换后" << s1 << " " << s2 << endl;
return 0;
}
6.使用 getline() 函数来获取 string 输入
int main()
{
string s;
getline(cin, s);
cout << s;
return 0;
}
7.erase() 进行元素删除操作
int main()
{
string str("Hello,World!!");
str.erase(5, 6); // 下标为0开始 删除从索引位置 5 (包括第五个字符)开始的 6 个字符
cout << "str为:" << str << endl; //Hello!!
return 0;
}
本篇完.