目录
今天我们接着上次的章节继续,这次我们来说一个为解决上个方法的缺陷而诞生的方法string类。
C++字符串操作中的陷阱
正文:
我们先来看一看什么是C++,还有关于它的定义:
在C++中,string
是一个非常重要的类,用于处理文本数据。它是标准模板库(Standard Template Library, STL)的一部分,定义在头文件<string>
中。与C语言中的字符数组(如char[]
)相比,string
类提供了更丰富的功能和更高的安全性。
主要特点:
- 动态内存管理:
string
类自动管理内存,不需要手动分配和释放内存,减少了内存泄漏的风险。 - 丰富的成员函数:
string
类提供了大量的成员函数来执行各种字符串操作,如连接、查找、比较、替换、插入和删除等。 - 边界检查:与C语言中的字符数组相比,
string
类在访问越界时会抛出异常或返回错误,提高了程序的安全性。(正好可以解决C语言中的字符数组带来的缺陷)
基本操作:
- 当然在开始之前我们需要提前写入这个类的头文件:include<string>
- 定义字符串然后进行初始化。
- 同样也可以赋值,添加元素到字符串中。
- 访问字符串的元素,还可以对其进行修改。
- 比较字符串之间的大小,字符串的长度大小,然后输出结果。(< > == != >= <=)。
- 拼接字符串或者拷贝字符串。
代码演示:
include<iostream>
using namespace std;
include<string>
include<string.h>
int main()
{
string n;
//三种初始化方式
string n="li hua";
string s("my name");
string s=string("name");
利用字符和计数来初始化x(输出结果是 8个x)
string x('h',8);
两种求长度的结果是一样的
cout<<n.size()<<endl;
cout<<n.length()<<endl;
设计的字符串的预存大小
cout<<n.capacity()<<endl;
下面就是两个字符数组的大小比较,之前讲到的关系运算符都可以用
cout<<(n==s)<<endl;
cout<<(n<s)<<endl;
cout<<(n!=s)<,endl;
转换为C语言风格的字符串,利用c_str()的方式来转换
const char*c_str1=n.c_str();
cout<<"转换后的字符串"<<c_str<<endl;
随机访问(获取字符串中的某个元素)
string a="mine";
cout<<s[0]<<endl;//类似数组的访问方式
指定访问:
char ch = n[0]; // 使用下标访问,但注意越界
char firstChar = n.front(); // 获取第一个字符
char lastChar = n.back(); // 获取最后一个字符
字符串拷贝
string s=n;直接链接两个字符串
字符串的拼接:
string b="is yours";
string c="peter";
string d=c+b;
c+=b;这一步和上面的那步相似,只不过是简化的方式;而且完整的写法是:c=c+b;这里省略了一步。
for(int i=0;i<n.size; i++)
{
cout<<n[i]<<endl;
}
for(int i=0;i<d.size; i++)
{
cout<<n[i]<<endl;
}
return 0;
}
总结:
string结合了C++的新特性。
使用起来比原始的C语言的方法更加的安全和方便。
对比性能要求不高的程序可以使用。
新语言的分享:
然后我就要说一下最近关注到的新语言rust,这个语言目前是最有希望可以去达到C++成就的语言,因为这个语言在开发的时候就会避免C语言中经常出现的一些安全型问题。
🆗到这里,这篇关于:C++字符串中的string类操作就说完了,求一个免费的赞,感谢阅读。