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():rfind(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