STL容器:string核心总结
string并不是一个单独的容器,只是basic_string 模板类的一个特化,basic_string用于创建可以存储任何类型字符的字符串类:
template<
typename _CharT, // 字符的类型
typename _Traits = char_traits<_CharT>, // 字符类型的行为
typename _Alloc = allocator<_CharT> // 内存分配器
> class basic_string;
typedef basic_string<char> string;
string的构造函数
string s1; // 空字符串,length为0
string s2("hello"); // 使用const char* 构造
string s3(s2); // 使用一个string拷贝构造
string s4(std::move(s3)); // 使用一个string移动构造
string s4(3, 'a'); // "aaa"
string s5(s4.begin(), s4.end()); // 使用迭代器构造
string s6(s4, 1, 2); // 从s4的索引1开始,复制2个字符
string s7 {'o','k'}; // 列表初始化
string s8 = "hello"; // C风格构造
string的成员函数
访问:
好的,这是按照你提供的格式整理的 std::string 成员函数笔记。
string的成员函数
访问
| 成员函数 | 函数说明 |
|---|---|
at(size_type pos) |
带有边界检查,返回对索引 pos 处字符的引用。如果索引越界,则抛出 std::out_of_range 异常。 |
operator[](size_type pos) |
返回对索引 pos 处字符的引用。不执行边界检查,速度更快。 |
front() |
返回对第一个字符的引用。 |
back() |
返回对最后一个字符的引用。 |
const char* c_str() |
返回一个指向以空字符结尾的C-风格字符串的指针。此指针所指向的内存不应被修改。 |
const char* data() |
返回一个指向字符串底层字符数组的指针。data() 返回的字符数组不保证以空字符结尾。 |
修改
| 成员函数 | 说明 |
|---|---|
append(const string& str) |
在字符串末尾追加 str。 |
assign(const string& str) |
将字符串的内容替换为 str。 |
insert(size_type pos, const string& str) |
在位置 pos之前插入 str。 |
erase(size_type pos, size_type len) |
从位置 pos 开始移除 len 个字符。 |
clear() |
移除所有字符,使字符串变为空。 |
push_back(char c) |
在字符串末尾添加一个字符 c。 |
pop_back() |
移除字符串的最后一个字符。 |
replace(size_type pos, size_type len, const string& str) |
将从 pos 开始的 len 个字符替换为 str。 |
copy(char* s, size_type len, size_type pos) |
将字符串的子串复制到字符数组 s 中,从 pos 开始,最多复制 len 个字符。 |
resize(size_type count) |
改变字符串的大小为 count。 |
swap(string& other) |
与另一个 string 交换内容。 |
搜索:
- find():
find(s, idx),从idx开始从左往右查找子串s,如果找到返回首次出现时首字符的索引,如果找不到,返回string::npos。 - rfind():r
find(s, idx),从idx开始从右往左查找子串s,如果找到返回首次出现时首字符的索引,如果找不到,返回string::npos。 - find_first_of():
find_first_of(s, idx),从idx开始查找子串s中任何一个字符首次出现的位置。 - find_fist_not_of():查找第一个不包含在参数中的字符。
- find_last_of():
find_last_of(s, idx),从idx开始查找子串s中任何一个字符最后一次出现的位置。 - find_last_not_of():查找最后一个不包含在参数中的字符
操作:
- compare():相同为0。
- substr():
substr(idx, len),从idx开始,获取len个字符,返回该字符串。
容量:
好的,这是按照你提供的格式整理的 std::string 成员函数笔记。
string的成员函数
访问
| 成员函数 | 函数说明 |
|---|---|
at(size_type pos) |
带有边界检查,返回对索引 pos 处字符的引用。如果索引越界,则抛出 std::out_of_range 异常。 |
operator[](size_type pos) |
返回对索引 pos 处字符的引用。不执行边界检查,速度更快。 |
front() |
返回对第一个字符的引用。 |
back() |
返回对最后一个字符的引用。 |
const char* c_str() |
返回一个指向以空字符结尾的C-风格字符串的指针。此指针所指向的内存不应被修改。 |
const char* data() |
返回一个指向字符串底层字符数组的指针。data() 返回的字符数组不保证以空字符结尾。 |
copy(char* s, size_type len, size_type pos = 0) |
将字符串的子串复制到字符数组 s 中,从 pos 开始,最多复制 len 个字符。 |
修改
| 成员函数 | 说明 |
|---|---|
append(const string& str) |
在字符串末尾追加 str。 |
assign(const string& str) |
将字符串的内容替换为 str。 |
insert(size_type pos, const string& str) |
在位置 pos 处插入 str。 |
erase(size_type pos = 0, size_type len = npos) |
从位置 pos 开始移除 len 个字符。 |
clear() |
移除所有字符,使字符串变为空。 |
push_back(char c) |
在字符串末尾添加一个字符 c。 |
pop_back() |
移除字符串的最后一个字符。 |
replace(size_type pos, size_type len, const string& str) |
将从 pos 开始的 len 个字符替换为 str。 |
resize(size_type count) |
改变字符串的大小为 count。如果 count 小于当前大小,多余的字符会被移除;如果 count 大于当前大小,新添加的字符会被默认初始化为空字符。 |
swap(string& other) |
与另一个 string 交换内容。 |
容量
| 成员函数 | 说明 |
|---|---|
empty() |
如果字符串中没有字符,则返回 true。 |
size() |
返回字符串中字符的数量。 |
length() |
返回字符串中字符的数量,与 size() 相同。 |
max_size() |
返回字符串可以容纳的最大字符数量。 |
reserve(size_type new_cap) |
请求字符串的容量至少为 new_cap。只在 new_cap 大于原有 capacity 时才扩容。 |
capacity() |
返回字符串当前分配的内存可以容纳的字符数量。 |
shrink_to_fit() |
减少容量以适应其大小。可能会释放未使用的内存。非强制,能否达成依赖于实现。 |
操作
| 成员函数 | 说明 |
|---|---|
substr(size_type pos, size_type len) |
返回一个新字符串,包含从位置 pos 开始、长度为 len 的子串。 |
compare(const string& str) |
比较字符串和 str,返回一个整数,表示它们的字典序关系。 |
find(const string& str, size_type pos = 0) |
从位置 pos 开始查找 str 第一次出现的位置。如果找到,返回索引;否则返回 string::npos。 |
rfind(const string& str, size_type pos = npos) |
从位置 pos 开始向后查找 str 最后一次出现的位置。如果找到,返回索引;否则返回 string::npos。 |
迭代器
| 成员函数 | 说明 |
|---|---|
begin() |
返回指向字符串第一个字符的迭代器。 |
end() |
返回指向字符串最后一个字符之后位置的迭代器。 |
rbegin() |
返回指向字符串最后一个字符的反向迭代器。 |
rend() |
返回指向字符串第一个字符之前位置的反向迭代器。 |
cbegin() |
返回指向字符串第一个字符的 const 迭代器。 |
cend() |
返回指向字符串最后一个字符之后位置的 const 迭代器。 |
crbegin() |
返回指向字符串最后一个字符的 const 反向迭代器。 |
crend() |
返回指向字符串第一个字符之前位置的 const 反向迭代器。 |
string的非成员函数
- to_string():将
int,long,float,double等数值转为字符串。 - stoi():string to int
- stol():string to long
- stoll():string to long long
- stof():string to float
- stod():string to double