命名空间
变体
操作

C++ 标准库头文件

来自 cppreference.cn
< cpp
 
 
标准库头文件
算法
<algorithm>
<numeric>
字符串
<cctype>
<cstring>
<cuchar> (C++11)
<cwchar>
<cwctype>
<string_view> (C++17)
<string>
文本处理
<clocale>
<codecvt> (C++11/17/26*已弃用,并在 C++26 中移除)
<locale>
<regex> (C++11)
<text_encoding> (C++26)   
数值
<cfenv> (C++11)
<cmath>
<complex>
<linalg> (C++26)
<numbers> (C++20)
<random> (C++11)
<simd> (C++26)
<valarray>
时间
<chrono> (C++11)
<ctime>
C 兼容性
<ccomplex> (C++11/17/20*已弃用,并在 C++20 中移除)
<ciso646> (直到 C++20)
<cstdalign> (C++11/17/20*已弃用,并在 C++20 中移除)
<cstdbool> (C++11/17/20*已弃用,并在 C++20 中移除)
<ctgmath> (C++11/17/20*已弃用,并在 C++20 中移除)
输入/输出
<cinttypes> (C++11)
<cstdio>
<filesystem> (C++17)
<fstream>
<iomanip>
<iosfwd>
<iostream>
<ios>
<istream>
<ostream>
<print> (C++23)
<spanstream> (C++23)
<sstream>
<streambuf>
<strstream> (C++98/26*已弃用,并在 C++26 中移除)
<syncstream> (C++20)
并发支持
<atomic> (C++11)
<barrier> (C++20)
<condition_variable> (C++11)
<future> (C++11)
<hazard_pointer> (C++26)
<latch> (C++20)
<mutex> (C++11)
<rcu> (C++26)
<semaphore> (C++20)
<shared_mutex> (C++14)
<stdatomic.h> (C++23)
<stop_token> (C++20)
<thread> (C++11)
执行支持
<execution> (C++17)



 

C++ 标准库的接口由以下头文件集合定义。

目录

多用途头文件

通用目的工具: 程序控制动态内存分配随机数排序和搜索[编辑]
算法并行版本的预定义执行策略 和执行控制组件(自 C++26 起)[编辑]

语言支持库

浮点类型的限制[编辑]
整型类型的限制[编辑]
(C++20)
三路比较运算符 支持[编辑]
契约支持库[编辑]
协程支持库[编辑]
保存(和跳转到)执行上下文的宏(和函数)[编辑]
用于信号管理的函数和宏常量[编辑]
处理可变长度参数列表[编辑]
标准宏和类型定义[编辑]
(C++11)
固定宽度整数类型其他类型的限制[编辑]
异常处理工具[编辑]
std::initializer_list 类模板[编辑]
查询算术类型的属性[编辑]
底层内存管理工具[编辑]
提供获取 源代码位置 的方法[编辑]
固定宽度浮点类型[编辑]
std::type_index[编辑]
运行时类型信息工具[编辑]
(C++20)
提供用于验证库实现状态的宏[编辑]

概念库

基本库概念[编辑]

诊断库

有条件编译的宏,用于将其参数与零进行比较[编辑]
包含最后错误编号的宏[编辑]
调试库[编辑]
堆栈跟踪[编辑]
标准异常类型[编辑]
定义 std::error_code,一个平台相关的错误代码[编辑]

内存管理库

高级内存管理工具[编辑]
多态分配器和内存资源[编辑]
嵌套分配器类[编辑]

元编程库

(C++11)
编译时有理算术[编辑]
编译时类型信息工具[编辑]

通用工具库

(C++17)
std::any[编辑]
(C++20)
位操作 函数[编辑]
std::bitset 类模板[编辑]
std::expected 类模板[编辑]
函数对象、函数调用、绑定操作和引用包装器[编辑]
std::optional 类模板[编辑]
(C++11)
std::tuple 类模板[编辑]
各种 实用工具组件[编辑]
(C++17)
std::variant 类模板[编辑]

容器库

(C++11)
std::array 容器[编辑]
<deque>
std::flat_mapstd::flat_multimap 容器适配器[编辑]
std::flat_setstd::flat_multiset 容器适配器[编辑]
std::forward_list 容器[编辑]
(C++26)
std::hive 容器[编辑]
std::inplace_vector 容器[编辑]
std::list 容器[编辑]
std::mapstd::multimap 关联容器[编辑]
(C++23)
std::mdspan 视图[编辑]
std::queuestd::priority_queue 容器适配器[编辑]
std::setstd::multiset 关联容器[编辑]
(C++20)
std::span 视图[编辑]
std::stack 容器适配器[编辑]
std::unordered_mapstd::unordered_multimap 无序关联容器[编辑]
std::unordered_setstd::unordered_multiset 无序关联容器[编辑]
std::vector 容器[编辑]

迭代器库

范围迭代器[编辑]

范围库

std::generator 类模板[编辑]
(C++20)
范围访问、原语、要求、工具和适配器[编辑]

算法库

对范围进行操作的算法[编辑]
对范围内值进行数值运算[编辑]

字符串库

各种 窄字符字符串处理函数[编辑]
std::basic_string 类模板[编辑]
std::basic_string_view 类模板[编辑]

文本处理库

用于确定窄字符类别的函数[编辑]
std::to_charsstd::from_chars[编辑]
C 本地化工具[编辑]
(C++11)(在 C++17 中弃用)(在 C++26 中移除)
Unicode 转换设施[编辑]
(C++11)
C 风格的 Unicode 字符转换函数[编辑]
各种 多字节 字符串处理函数[编辑]
用于确定宽字符类别的函数[编辑]
(C++20)
格式化库,包括 std::format[编辑]
本地化工具[编辑]
(C++11)
用于支持正则表达式处理的类、算法和迭代器[编辑]
文本编码标识[编辑]

数值库

(C++11)
浮点环境 访问函数[编辑]
常用数学函数[编辑]
复数类型[编辑]
(C++26)
基本线性代数算法 (BLAS)[编辑]
(C++20)
数学常数[编辑]
(C++11)
随机数生成器和分布[编辑]
(C++26)
数据并行类型和对这些类型的操作[编辑]
用于表示和操作值数组的类[编辑]

时间库

(C++11)
C++ 时间工具[编辑]
C 风格的时间/日期工具[编辑]

输入/输出库

格式化宏, intmax_tuintmax_t 数学和转换[编辑]
C 风格的输入输出函数[编辑]
std::filesystem::path 类和 支持函数[编辑]
std::basic_fstream, std::basic_ifstream, std::basic_ofstream 类模板和类型别名[编辑]
用于控制输入和输出格式的辅助函数[编辑]
std::ios_base 类, std::basic_ios 类模板和类型别名[编辑]
输入/输出库中所有类的前向声明[编辑]
几个标准流对象[编辑]
std::basic_istream 类模板和类型别名[编辑]
std::basic_ostream, std::basic_iostream 类模板和类型别名[编辑]
(C++23)
格式化输出库,包括 std::print[编辑]
std::basic_spanstream, std::basic_ispanstream, std::basic_ospanstream 类模板和类型别名[编辑]
std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream 类模板和类型别名[编辑]
std::basic_streambuf 类模板[编辑]
(在 C++98 中弃用)(在 C++26 中移除)
std::strstream, std::istrstream, std::ostrstream[编辑]
std::basic_osyncstream, std::basic_syncbuf 和类型别名[编辑]

并发支持库

(C++11)
原子操作库[编辑]
(C++20)
屏障[编辑]
线程等待条件[编辑]
(C++11)
异步计算原语[编辑]
危害指针[编辑]
(C++20)
闩锁[编辑]
(C++11)
互斥原语[编辑]
(C++26)
读取-复制更新机制[编辑]
信号量[编辑]
共享互斥原语[编辑]
用于 std::jthread 的停止令牌[编辑]
(C++11)
std::thread 类和 支持函数[编辑]

[[编辑]] C 兼容性标头

对于某些 xxx.h 形式的 C 标准库标头,C++ 标准库既包含同名标头,也包含另一种 cxxx 形式的标头(上面列出了所有有意义的 cxxx 标头)。 xxx.h 形式的标头的预期用途仅用于互操作性。 C++ 源文件可能需要包含其中一个标头才能成为有效的 ISO C。不打算也成为有效 ISO C 的源文件不应使用任何 C 标头。

除了 complex.h 之外,C++ 标准库中包含的每个 xxx.h 标头都将相应的 cxxx 标头会放置在 std 命名空间中的每个名称放置在全局命名空间中。

这些标头也允许在 std 命名空间中声明相同的名称,并且相应的 cxxx 标头也允许在全局命名空间中声明相同的名称:包括 <cstdlib> 肯定提供 std::malloc,也可能提供 ::malloc。 包括 <stdlib.h> 肯定提供 ::malloc,也可能提供 std::malloc。 这甚至适用于不属于 C 标准库的函数和函数重载。

注意:xxx.h 标头在 C++98 中已弃用,在 C++23 中已取消弃用。 纯 C++ 代码不鼓励使用这些标头,但不会在未来移除。

行为与 <cassert> 相同[编辑]
行为如同来自 <cctype> 的每个名称都放置在全局命名空间中一样[编辑]
行为与 <cerrno> 相同[编辑]
(C++11)
行为如同来自 <cfenv> 的每个名称都放置在全局命名空间中一样[编辑]
行为与 <cfloat> 相同[编辑]
行为如同来自 <cinttypes> 的每个名称都放置在全局命名空间中一样[编辑]
行为与 <climits> 相同[编辑]
行为如同来自 <clocale> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <cmath> 的每个名称都放置在全局命名空间中一样,
除了 数学特殊函数 的名称之外[编辑]
行为如同来自 <csetjmp> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <csignal> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <cstdarg> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <cstddef> 的每个名称都放置在全局命名空间中一样,
除了 std::byte 和相关函数 的名称之外[编辑]
行为如同来自 <cstdint> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <cstdio> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <cstdlib> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <cstring> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <ctime> 的每个名称都放置在全局命名空间中一样[编辑]
(C++11)
行为如同来自 <cuchar> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <cwchar> 的每个名称都放置在全局命名空间中一样[编辑]
行为如同来自 <cwctype> 的每个名称都放置在全局命名空间中一样[编辑]

[[编辑]] 特殊 C 兼容性标头

标头 <stdatomic.h> 声明了 C 标准库中也提供的名称,并定义了 _Atomic 宏,它是 C 中的 关键字。 与其他 xxx.h 标头不同,不提供相应的 <cstdatomic>

定义了 _Atomic 并在 C 标准库中提供了相应的组件[编辑]

[[编辑]] 空 C 标头

标头 <complex.h><ccomplex><tgmath.h><ctgmath> 不包含 C 标准库中的任何内容,而是仅包含 C++ 标准库中的其他标头。

(C++11)(在 C++17 中弃用)(在 C++20 中移除)
仅包含标头 <complex>[编辑]
仅包含标头 <complex>[编辑]
(C++11)(在 C++17 中弃用)(在 C++20 中移除)
仅包含标头 <complex><cmath>:C 标头 <tgmath.h> 内容的等效重载已由这些标头提供[编辑]
仅包含标头 <complex><cmath>[编辑]

[[编辑]] 无意义的 C 标头

标头 <ciso646><cstdalign><cstdbool> 在 C++ 中没有意义,因为它们在 C 中提供的宏是 C++ 中的语言关键字。

(在 C++20 中移除)
空标头。 C 中的 iso646.h 中出现的宏C++ 中的关键字[编辑]
(C++11)(在 C++17 中弃用)(在 C++20 中移除)
定义了一个 兼容性宏常量[编辑]
(C++11)(在 C++17 中弃用)(在 C++20 中移除)
定义了一个 兼容性宏常量[编辑]
不起作用[编辑]
定义了一个 兼容性宏常量[编辑]
定义了一个 兼容性宏常量[编辑]

[[编辑]] 不受支持的 C 标头

C 标头 <stdatomic.h>,(直到 C++23) <stdnoreturn.h><threads.h> 未包含在 C++ 中,也没有 cxxx 等效项。

[[编辑]] 实验性库

C++ TR/TS 也定义了几个标头集合。

[[编辑]] 另请参阅

C 文档,用于 C 标准库标头