名稱空間
變體
操作

C++ 標準庫標頭檔案

來自 cppreference.com
< cpp
 
 
標準庫標頭檔案
演算法
<algorithm>
<numeric>
字串
<cctype>
<cstring>
<cuchar> (C++11)
<cwchar>
<cwctype>
<string_view> (C++17)
<string>
文字處理
<clocale>
<codecvt> (C++11/17/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*)
<ciso646> (直到 C++20)
<cstdalign> (C++11/17/20*)
<cstdbool> (C++11/17/20*)
<ctgmath> (C++11/17/20*)
 

C++ 標準庫的介面由以下標頭檔案集合定義。

目錄

多用途標頭檔案

通用工具:程式控制動態記憶體分配隨機數排序與搜尋[編輯]
演算法並行版本和執行控制組件的預定義執行策略(C++26 起)[編輯]

語言支援庫

浮點型別限制[編輯]
整數型別限制[編輯]
(C++20)
三路比較運算子支援[編輯]
契約支援庫[編輯]
協程支援庫[編輯]
儲存(和跳轉)到執行上下文的宏(和函式)[編輯]
訊號管理函式和宏常量[編輯]
可變長度引數列表處理[編輯]
標準宏和 typedef[編輯]
(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 容器[編輯]
std::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 容器[編輯]

迭代器庫

範圍迭代器[編輯]

範圍庫 (Ranges library)

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_fstreamstd::basic_ifstreamstd::basic_ofstream 類模板和 typedef[編輯]
幫助函式以控制輸入和輸出的格式[編輯]
std::ios_base 類、std::basic_ios 類模板和 typedef[編輯]
輸入/輸出庫中所有類的前向宣告[編輯]
幾個標準流物件[編輯]
std::basic_istream 類模板和 typedef[編輯]
std::basic_ostreamstd::basic_iostream 類模板和 typedef[編輯]
(C++23)
格式化輸出庫,包括 std::print[編輯]
std::basic_spanstreamstd::basic_ispanstreamstd::basic_ospanstream 類模板和 typedef[編輯]
std::basic_stringstreamstd::basic_istringstreamstd::basic_ostringstream 類模板和 typedef[編輯]
std::basic_streambuf 類模板[編輯]
(在 C++98 中已廢棄)(在 C++26 中已移除)
std::strstreamstd::istrstreamstd::ostrstream[編輯]
std::basic_osyncstreamstd::basic_syncbuf 和 typedef[編輯]

併發支援庫

(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++ TRs/TSs 也定義了幾種標頭檔案集合。

[編輯] 參見

C 文件,用於C 標準庫標頭檔案
English 日本語 中文(简体) 中文(繁體)