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