[关闭]
@songying 2019-03-15T21:33:05.000000Z 字数 1978 阅读 1199

c++ 字符串 -- string库

STL


C-strings 与string

c++ 中提供了两种字符串表示形式: C-strings 与string类。

二者的区别在于 \0在 string 类中并不具有特殊意义,但在C-string中用来标识字符串结束。

函数 说明
CharT* data(); 以字符数组的形式返回string,是一个包含\0字符的有效C-string
const CharT* c_str() const; 以字符数组的形式返回string

string 库介绍

<string> 中, basic_string<> 被定义为所有字符串型别的基本模板类,并且提供了两个basic_string<> 的特化版本:

所有的string 类采用相同的接口,这里的string代表任何string type,包括string, wstring, u16string和u32string。

导入

导入 说明
#include <string>
using std::string;

0. 其他

函数 说明
=
assign() 分配值
allocator_type get_allocator() const; 返回与string关联的分配器

1. 参数说明

参数 说明
const string &str 整个str字符串
const string &str, size_type idx, size_type num 大部分情况下指字符串str以idx开始的num个字符
const char* cstr 整个C-string cstr
const char* chars, size_type len 字符数组chars中的len个字符
char c 字符c
size_type num, char c num 个字符c
iterator beg, iterator end 区间[beg,end] 内所有字符

2. 构造函数与析构函数

表达式 说明
string s 生成一个空字符串s
string s(str) 生产字符串str的一个复制品
string s(str, stridx) 将str内“始于stridx”的部分当做字符串s的初值
string s(str, stridx, strlen) 将str内“始于stridx且长度顶多strlen的部分当做字符串s的初值
string s(cstr) 以C-string cstr作为字符串s的初值
string s(chars, chars_len) 以C-string cstr 的前chars_len个字符作为字符串s的初值
string s(num, c) 生成一个字符串,包含num个c字符
string s(beg, end) 以区间 [begin,end]内的字符作为字符串s的初值
s.~string() 销毁所有字符,释放内存

你不能以单一字符来初始化某个字符串,如:

  1. std::string s('x') // 错误, 因为此处的是一个字符而非字符串
  2. std::string s({'x'})
  3. std::string s(1,'x')

3. 大小和容量

函数 说明
s.size(); 返回string中的字符数
s.length(); 返回string中的字符数,与size()等价
s.empty() 检查string是否为空,空:true
s.max_size(); 返回string最多能包含的字符数
s.capacity(); 返回重新分配内存前。string所能包含的最大字符数
s.reserve(size_type new_cap); 更改当前string的内存容量
s.shrink_to_fit(); 请求移除未使用的内存容量

4. 元素访问

函数 说明
[] 返回索引出的字符引用,不检查索引是否有效
reference at( size_type pos ); 返回索引出的字符引用,检查索引是否有效。
CharT& front(); 返回首字符的引用
CharT& back(); 返回末字符的引用

5. 比较操作

操作符 说明
==
!=
<
<=
>
>=

6. 清空操作

函数 说明
void clear(); 清除所有字符,但不释放内存
iterator erase( const_iterator position ); 移除位于position的字符
iterator erase( const_iterator first, const_iterator last ); 移除范围 [first, last) 中的字符。
basic_string& erase( size_type index = 0, size_type count = npos ); 移除始于index 的 count个字符

7. 插入操作

函数 说明
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注