目录
在使用string类时,必须包含#include头文件以及using namespace std;
<1>string 是表示字符串的字符串类;
<2>该类的接口与常规容器的接口基本相同,再添加一些专门用来操作string的常规操作;
<3>string在底层实际是:basic_string模板类的别名,
typedef basic_string
string; <4>不能操作多字节或者变长字符的序列。

string (); 构造空的string类对象,即空字符串
string (const char* s); 用c_string 来构造string类对象
string (const string& s); 拷贝构造函数

string (size_t n, char c) ; string类对象中包含n个字符c


size : 返回字符串有效字符长度
length:返回字符串有效字符串
capacity: 返回空间大小
empty: 检查字符串是否为空串,是返回turn,否返回flase
clear: 清空有效字符
reserve:为字符串预留空间
resize:将有效字符的个数改成n个,多出的空间用字符c填充

string类对象支持直接用cin和cout进行输入和输出

注:将s中字符串清空,注意清空时只是将size清0,不改变底层空间的大小。

只会改变size的大小,不会改变capacity的大小。
resize开空间并初始化。

开空间但不初始化


构建vector时,如果提前已经知道string中大概要放多少个元素,可以提前将string中空间设置好
注:
(1)size()和 length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一致,一般情况下基本都是用size();
(2) clear()只是将string中有效字符清空,不改变底层空间大小;
(3)resize(size_t n) 与 resize(size_t n,char c) 都是将字符串中有效字符改变到n个,不同的是当字符个数增多时,resize(size_t n)用0来填充多出的元素的空间,resize(size_t n , char c)用字符c来填充多出的元素空间。注意:resize在改变元素个数时,如果是将元素个数增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变。
(4)reserve(size_t n=0):为string预留空间,不改变有效元素个数,当reserve的参数小于string的底层空间总大小时,reserve不会改变容量大小。
operator[ ] :返回pos位置的字符,const string类对象调用
begin+end :begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器
rbegin+rend:rbegin获取最后一个字符的迭代器 + rend获取字符串第一个字符之前的位置的迭代器
范围for:C++支持更简洁的范围for的新遍历方式
不会抛异常,只会断言;at会抛异常




迭代器想象成像指针一样的东西。
范围for底层实际是迭代器:



push_back :在字符串后尾插字符c
append :在字符串后面追加一个字符串
operator+= :在字符串后追加字符串str
c_str :返回C格式字符串
find + npos :从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置
rfind : 从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置
substr : 在str中从pos位置开始,截取n个字符,然后将其返回


注意:
(1)在string尾部追加字符时,s.push_back(c) / s.append(1,c) / s+='c' 三种实现方法差不多,一般情况下string类的+=操作 用的比较多,+= 操作不仅可以连接单个字符,还可以连接字符串。
(2)对string操作时,如果能够大概预估到多少字符,可先通过reserve把空间预留好。
(3)插入(拼接)方式:push_back append operator
(4)正向和反向查找:find() rfind()
(5)截取子串:substr()
(6)删除:erase
![]()

len > 后面的字符长度,有多少拷贝多少,拷贝到结尾
缺省参数npos是整型最大值,一定大于后面的长度,不传第三个参数默认拷贝结尾。

operator[ ] :返回pos位置的字符,const string类对象调用;
begin + end : begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器;
rbegin + rend :rbegin获取最后一个字符的迭代器 + rend获取第一个字符的前一个位置的迭代器;
范围for :C++11支持更简洁的范围for的新遍历方式;




如若对你有帮助,记得点赞、收藏、关注哦!
若有误,望各位,在评论区留言或者私信我 指点迷津!!!谢谢^ ^ ~