目录
1.string概述
C++的标准库中定义了string类
1. string是表示字符串的字符串类
2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作
下面是C++的官方网站,若有疑问,可在网站中查询学习
string - C++ Reference (cplusplus.com)https://legacy.cplusplus.com/reference/string/string/
2.string使用
1.构造初始化
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
string s2("hello world");
string s3 = s2;
string s4(s2);
string s5(s2, 1, 6);//用另一个字符串的区间构造
cout << s5 << endl;
string s6(s2, 1);//用另一个字符串的区间构造
cout << s6 << endl;
string s7(s2, 1, 100);//用另一个字符串的区间构造
cout << s7 << endl;
string s8("hello world", 5);//用另一个字符串的区间构造,且只拷贝构造前5个字符
cout << s8 << endl;
string s9(10, 'x');//单字符构造,构造十个字符
cout << s9 << endl;
//赋值运算符重载构造
s1 = s2;
s1 = "world";
s1 = 'x';
return 0;
}
ello w
ello world
ello world
hello
xxxxxxxxxx
2.成员函数
1.迭代器
迭代器是一种可以统一使用的遍历方式,迭代器类似于C里面的指针
我们可以使用 begin()
和 end()
函数来获取字符串的起始和结束,除了使用迭代器来遍历字符串,我们还可以使用迭代器来进行插入、删除等操作
begin和end是正向迭代器,rbegin和rend是反向迭代器
具体操作请看目录 5.访问遍历
2.容量操作
C++的string类提供了许多与字符串容量相关的接口
1.size和length 返回字符串长度
两者作用相同,都是返回字符串长度,平常推荐用size,其他容器也是用size
string s1("hello world");
cout << s1.size() << endl;
cout << s1.length() << endl;
2.resize 调整字符串大小
resize调整字符串的大小。该方法可以接收一个参数,用于指定字符串的新大小。如果新大小小于当前大小,则丢弃超出新大小的字符;如果新大小大于当前大小,则在末尾添加空字符或指定的字符。
string str = "Hello";
// 调整字符串为 10 个字符,并在末尾添加 '!'
str.resize(10, '!');
cout << str << endl;
// 调整字符串为 3 个字符,丢弃超出的字符
str.resize(3);
resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个,不同的是当字 符个数增多时:resize(n)用0来填充多出的元素空间,resize(size_t n, char c)用字符c来填充多出的 元素空间。注意:resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大 小,如果是将元素个数减少,底层空间总大小不变。
3.capacity 获得字符串容量
获取字符串的容量
string str = "Hello";
cout << str.capacity() << endl;
需要注意的是,字符串的容量并不一定等于字符串的长度(即字符的个数)。容量表示的是在不重新分配内存的情况下,字符串所能容纳的最大字符数。当字符串的长度超过当前容量时,可能会触发重新分配内存的操作。
4.reserve 调整容量
预留字符串的存储空间,以避免频繁的内存重新分配操作
string str = "Hello";
// 预留至少 20 个字符的存储空间
str.reserve(20);
// 获取字符串的容量
cout << "Capacity after reserving space: " << str.capacity() << endl;
通过预留存储空间,我们可以避免频繁的内存重新分配操作,从而提高程序的性能和效率。当我们预先知道要存储的字符串较大时,预留足够的存储空间可以减少内存分配的次数,节省时间和资源。需要注意的是,reserve()
方法只会增加字符串的容量,而不会改变字符串的长度。
5.clear 清除
清空字符串中的