std::basic_string
|   定义于头文件  <string>
  | 
||
|   template<      class CharT,   | 
(1) | |
|   namespace pmr {     template <class CharT, class Traits = std::char_traits<CharT>>  | 
(2) | (C++17 起) | 
类模板 basic_string 存储并操纵作为非数组平凡标准布局类型的仿 char 对象序列。该类既不依赖字符类型,亦不依赖该类型上的原生操作。操作的定义通过 Traits 模板形参—— std::char_traits 的特化或兼容特性类提供。 Traits::char_type 和 CharT 必须指名同一类型;否则程序为谬构。
basic_string 是相继存储的,即对于 basic_string s ,对任何 [0, s.size()) 中的 n 有 &*(s.begin() + n) == &*s.begin() + n ,或等价地,指向 s[0] 的指针能传递给期待指向空终止 (C++11 起) CharT[] 数组首元素指针的函数。
std::basic_string 满足知分配器容器 (AllocatorAwareContainer) 、序列容器 (SequenceContainer) 及连续容器 (ContiguousContainer)  (C++17 起)的要求
提供数个对于常用字符类型的 typedef :
|   定义于头文件  
<string>  | |
| 类型 | 定义 | 
| std::string | std::basic_string<char> | 
| std::wstring | std::basic_string<wchar_t> | 
| std::u8string (C++20) | std::basic_string<char8_t> | 
| std::u16string (C++11) | std::basic_string<char16_t> | 
| std::u32string (C++11) | std::basic_string<char32_t> | 
| std::pmr::string (C++17) | std::pmr::basic_string<char> | 
| std::pmr::wstring (C++17) | std::pmr::basic_string<wchar_t> | 
| std::pmr::u8string (C++20) | std::pmr::basic_string<char8_t> | 
| std::pmr::u16string (C++17) | std::pmr::basic_string<char16_t> | 
| std::pmr::u32string (C++17) | std::pmr::basic_string<char32_t> | 
模板形参
| CharT | - | 字符类型 | 
| Traits | - | 指定字符类型上操作的特性类 | 
| Allocator | - | 用于分配内部存储的分配器 (Allocator) 类型 | 
成员类型
| 成员类型 | 定义 | ||||
  traits_type
 | 
  Traits
 | ||||
  value_type
 | 
  CharT
 | ||||
  allocator_type
 | 
  Allocator  | ||||
  size_type
 | 
   
  | ||||
  difference_type
 | 
   
  | ||||
  reference
 | 
   
  | ||||
  const_reference
 | 
   
  | ||||
  pointer
 | 
   
  | ||||
  const_pointer
 | 
   
  | ||||
  iterator
 | 
遗留随机访问迭代器 (LegacyRandomAccessIterator) | ||||
  const_iterator
 | 
常随机访问迭代器 | ||||
  reverse_iterator
 | 
std::reverse_iterator<iterator> | ||||
  const_reverse_iterator
 | 
std::reverse_iterator<const_iterator> | ||||
成员函数
  构造 basic_string (公开成员函数)  | |
|    (析构函数)  | 
  销毁字符串,若使用内部存储则解分配它  (公开成员函数)  | 
|    为字符串赋值   (公开成员函数)  | |
|   赋值字符给字符串  (公开成员函数)  | |
|    返回关联的分配器   (公开成员函数)  | |
 元素访问 | |
|   访问指定字符,有边界检查  (公开成员函数)  | |
|   访问指定字符  (公开成员函数)  | |
|    (C++11)  | 
  访问首字符  (公开成员函数)  | 
|    (C++11)  | 
  访问最后的字符  (公开成员函数)  | 
|   返回指向字符串首字符的指针  (公开成员函数)  | |
|   返回字符串的不可修改的 C 字符数组版本  (公开成员函数)  | |
|    (C++17)  | 
  返回到整个字符串的不可修改的 basic_string_view (公开成员函数)  | 
 迭代器 | |
|    (C++11)  | 
  返回指向起始的迭代器  (公开成员函数)  | 
|    (C++11)  | 
  返回指向末尾的迭代器  (公开成员函数)  | 
|    (C++11)  | 
  返回指向起始的逆向迭代器  (公开成员函数)  | 
|    (C++11)  | 
  返回指向末尾的逆向迭代器  (公开成员函数)  | 
 容量 | |
|   检查字符串是否为空  (公开成员函数)  | |
|   返回字符数  (公开成员函数)  | |
|   返回字符数的最大值  (公开成员函数)  | |
|   保留存储  (公开成员函数)  | |
|   返回当前对象分配的存储空间能保存的字符数量  (公开成员函数)  | |
|    (C++11)  | 
  通过释放不使用内存减少内存使用  (公开成员函数)  | 
 操作 | |
|   清除内容  (公开成员函数)  | |
|   插入字符  (公开成员函数)  | |
|   移除字符  (公开成员函数)  | |
|   后附字符到结尾  (公开成员函数)  | |
|    (C++11)  | 
  移除末尾字符  (公开成员函数)  | 
|   后附字符到结尾  (公开成员函数)  | |
|   后附字符到结尾  (公开成员函数)  | |
|   比较二个字符串  (公开成员函数)  | |
|    (C++20)  | 
  检查 string 是否始于给定前缀  (公开成员函数)  | 
|    (C++20)  | 
  检查 string 是否终于给定后缀  (公开成员函数)  | 
|    (C++23)  | 
   检查字符串是否含有给定的子串或字符   (公开成员函数)  | 
|   替换字符串的指定部分  (公开成员函数)  | |
|   返回子串  (公开成员函数)  | |
|   复制字符  (公开成员函数)  | |
|   更改存储的字符数  (公开成员函数)  | |
|   交换内容  (公开成员函数)  | |
 查找 | |
|   于字符串中寻找字符  (公开成员函数)  | |
|   寻找子串的最后一次出现  (公开成员函数)  | |
|   寻找字符的首次出现  (公开成员函数)  | |
|   寻找字符的首次缺失  (公开成员函数)  | |
|   寻找字符的最后一次出现  (公开成员函数)  | |
|   寻找字符的最后一次缺失  (公开成员函数)  | |
 常量 | |
|    [静态]  | 
  特殊值。准确含义依赖语境  (公开静态成员常量)  | 
非成员函数
|    连接两个字符串或者一个字符串和一个字符   (函数模板)  | |
|    (C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20)  | 
  以字典序比较两个字符串  (函数模板)  | 
|    特化 std::swap 算法  (函数模板)  | |
|   擦除所有满足特定判别标准的元素  (函数模板)  | |
 输入/输出 | |
|   执行字符串的流输入与输出  (函数模板)  | |
|   从 I/O 流读取数据到字符串  (函数模板)  | |
 数值转换 | |
|    (C++11)(C++11)(C++11)  | 
  转换字符串为有符号整数  (函数)  | 
|    (C++11)(C++11)  | 
  转换字符串为无符号整数  (函数)  | 
|    (C++11)(C++11)(C++11)  | 
  转换字符串为浮点值  (函数)  | 
|    (C++11)  | 
  转换整数或浮点值为 string (函数)  | 
|    (C++11)  | 
  转换整数或浮点值为 wstring (函数)  | 
字面量
|   定义于内联命名空间  
std::literals::string_literals | |
|    (C++14)  | 
  转换字符数组字面量为 basic_string (函数)  | 
辅助类
|    (C++11)(C++20)(C++11)(C++11)(C++11)(C++20)(C++20)(C++20)(C++20)(C++20)  | 
   string 的哈希支持   (类模板特化)  |