C++ 参考手册
- C++11
- C++14
- C++17
- C++20
- C++ 编译器支持情况表
- 独立与宿主实现
- C++ 语言
- C++ 关键词
- 预处理器
- C++ 标准库头文件
- 具名要求
- 功能特性测试 (C++20)
- 工具库
- 类型支持(基本类型、RTTI、类型特性)
- 概念库 (C++20)
- 错误处理
- 动态内存管理
- 日期和时间工具
- 字符串库
- std::basic_string
- std::basic_string<CharT,Traits,Allocator>::npos
- std::basic_string<CharT,Traits,Allocator>::at
- std::hash (std::string, std::wstring, std::u16string, std::u32string, std::pmr::string, std::pmr::wstring, std::pmr::u16string, std::pmr::u32string)
- std::basic_string<CharT,Traits,Allocator>::assign
- std::basic_string<CharT,Traits,Allocator>::get_allocator
- std::basic_string<CharT,Traits,Allocator>::substr
- std::basic_string<CharT,Traits,Allocator>::basic_string
- std::basic_string<CharT,Traits,Allocator>::operator=
- std::basic_string<CharT,Traits,Allocator>::operator[]
- std::basic_string<CharT,Traits,Allocator>::front
- std::basic_string<CharT,Traits,Allocator>::back
- std::basic_string<CharT,Traits,Allocator>::data
- std::basic_string<CharT,Traits,Allocator>::c_str
- std::basic_string<CharT,Traits,Allocator>::operator basic_string_view
- std::basic_string<CharT,Traits,Allocator>::begin, std::basic_string<CharT,Traits,Allocator>::cbegin
- std::basic_string<CharT,Traits,Allocator>::end, std::basic_string<CharT,Traits,Allocator>::cend
- std::basic_string<CharT,Traits,Allocator>::rbegin, std::basic_string<CharT,Traits,Allocator>::crbegin
- std::basic_string<CharT,Traits,Allocator>::rend, std::basic_string<CharT,Traits,Allocator>::crend
- std::basic_string<CharT,Traits,Allocator>::empty
- std::basic_string<CharT,Traits,Allocator>::size, std::basic_string<CharT,Traits,Allocator>::length
- std::basic_string<CharT,Traits,Allocator>::max_size
- std::basic_string<CharT,Traits,Allocator>::reserve
- std::basic_string<CharT,Traits,Allocator>::capacity
- std::basic_string<CharT,Traits,Allocator>::shrink_to_fit
- std::basic_string<CharT,Traits,Allocator>::clear
- std::basic_string<CharT,Traits,Allocator>::insert
- std::basic_string<CharT,Traits,Allocator>::erase
- std::basic_string<CharT,Traits,Allocator>::push_back
- std::basic_string<CharT,Traits,Allocator>::pop_back
- std::basic_string<CharT,Traits,Allocator>::append
- std::basic_string<CharT,Traits,Allocator>::operator+=
- std::basic_string<CharT,Traits,Allocator>::compare
- std::basic_string<CharT,Traits,Allocator>::starts_with
- std::basic_string<CharT,Traits,Allocator>::ends_with
- std::basic_string<CharT,Traits,Allocator>::replace
- std::basic_string<CharT,Traits,Allocator>::copy
- std::basic_string<CharT,Traits,Allocator>::resize
- std::basic_string<CharT,Traits,Allocator>::swap
- std::basic_string<CharT,Traits,Allocator>::find
- std::basic_string<CharT,Traits,Allocator>::rfind
- std::basic_string<CharT,Traits,Allocator>::find_first_of
- std::basic_string<CharT,Traits,Allocator>::find_first_not_of
- std::basic_string<CharT,Traits,Allocator>::find_last_of
- std::basic_string<CharT,Traits,Allocator>::find_last_not_of
- std::operator+(std::basic_string)
- std::swap(std::basic_string)
- std::literals::string_literals::operator""s
- std::erase, std::erase_if (std::basic_string)
- operator<<,>>(std::basic_string)
- std::getline
- operator==,!=,<,<=,>,>=,<=>(std::basic_string)
- std::stoi, std::stol, std::stoll
- std::stoul, std::stoull
- std::stof, std::stod, std::stold
- std::to_string
- std::to_wstring
- std::basic_string 的推导指引
- std::basic_string_view
- 空终止字节字符串
- 空终止多字节字符串
- 空终止宽字符串
- std::char_traits
- 注释
- 容器库
- 迭代器库
- 范围库 (C++20)
- 算法库
- 数值库
- 输入/输出库
- 文件系统库
- 本地化库
- 正则表达式库
- 原子操作库
- 线程支持库
- 实验性 C++ 特性
- 有用的资源
- 索引
- std 符号索引
- 协程支持 (C++20)
- C++ 关键词
std::basic_string
class CharT,
class Traits = std::char_traits<CharT>,
class Allocator = std::allocator<CharT>
template <class CharT, class Traits = std::char_traits<CharT>>
using basic_string = std::basic_string< CharT, Traits,
std::polymorphic_allocator<CharT>>
类模板 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++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 的哈希支持 (类模板特化) |