C++入门指南:string类文档详细解析
string类的常见接口说明【注意是常见重要接口,想了解全部可以搜索网站:cplusplus】
2.1string类对象的常见构造
|
(constructor) 函数名称 |
功能说明 |
|---|---|
|
string() (重点) |
构造空的string类对象,即空字符串 |
|
string(const char* s) (重点) |
用C-string来构造string类对象 |
|
string(size_t n, char c) |
string类对象中包含n个字符c |
|
string(const string&s) (重点) |
拷贝构造函数 |

2.2stinrg类对象的容量操作
|
函数名称 |
功能说明 |
|---|---|
|
size(重点) |
返回字符串有效字符长度 |
|
length |
返回字符串有效字符长度 |
|
capacity |
返回空间总大小 |
|
empty (重点) |
检测字符串释放为空串,是返回true,否则返回false |
|
clear(重点) |
清空有效字符 |
|
reserve(重点) |
为字符串预留空间** |
|
resize(重点) |
将有效字符的个数该成n个,多出的空间用字符c填充 |
1. size()与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接
口保持一致,一般情况下基本都是用size(),length()只适用于字符串底层是数组的对象。
2. clear()只是将string中有效字符清空,不改变底层空间大小。
3. resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个,不
同的是当字符个数增多时:resize(n)用0来填充多出的元素空间,resize(size_t n, char
c)用字符c来填充多出的元素空间。注意:resize在改变元素个数时,如果是将元素个数
增多,可能会改变底层容量的大小,如果是将元素个数减少,底层空间总大小不变。
4. reserve(size_t res_arg=0):为string预留空间,不改变有效元素个数,当reserve的参
数小于string的底层空间总大小时,reserver不一定(不同编译器可能不同在计算机中把不确定当作不能,所以该函数一般只用于扩容)会改变容量大小。
代码演示:

2.3string类对象的访问及遍历操作
|
函数名称 |
功能说明 |
|---|---|
|
operator[] (重 点) |
返回pos位置的字符,const string类对象调用 |
|
begin+ end |
begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器 |
|
rbegin + rend |
begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器 |
|
范围for |
C++11支持更简洁的范围for的新遍历方式 |
代码演示:

2.4string类对象的修改操作
|
函数名称 |
功能说明 |
|---|---|
|
push_back |
在字符串后尾插字符c |
|
append |
在字符串后追加一个字符串 |
|
operator+= (重点) |
在字符串后追加字符串str |
|
c_str(重点) |
返回C格式字符串 |
|
find + npos(重点) |
从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置 |
|
rfind |
从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置 |
|
subst |
在str中从pos位置开始,截取n个字符,然后将其返回 |
小秘诀:
1. 在string尾部追加字符时,s.push_back(c) / s.append(1, c) / s += 'c'三种的实现方式差
不多,一般情况下string类的+=操作用的比较多,+=操作不仅可以连接单个字符,还可
以连接字符串。
2. 对string操作时,如果能够大概预估到放多少字符,可以先通过reserve把空间预留好。
更多推荐
所有评论(0)