輸入/輸出庫
來自 cppreference.com
< cpp
C++ 包含以下輸入/輸出庫:一個OOP 風格的基於流的 I/O 庫,基於列印函式系列(自 C++23 起),以及一組標準的C 風格 I/O 函式。
目錄 |
[編輯] 基於流的 I/O
基於流的輸入/輸出庫圍繞抽象的輸入/輸出裝置組織。這些抽象裝置允許相同的程式碼處理檔案、記憶體流或執行即時任意操作(例如壓縮)的自定義介面卡裝置的輸入/輸出。
大多數類都是模板化的,因此它們可以適應任何基本字元型別。為最常見的字元型別(char 和 wchar_t)提供了單獨的型別定義。這些類組織成以下層次結構
繼承圖
抽象 | |
定義於標頭檔案
<ios> | |
管理格式化標誌和輸入/輸出異常 (類) | |
管理任意流緩衝區 (類模板) | |
定義於標頭檔案
<streambuf> | |
抽象原始裝置 (類模板) | |
定義於標頭檔案
<ostream> | |
包裝給定的抽象裝置(std::basic_streambuf) 並提供高階輸出介面 (類模板) | |
定義於標頭檔案
<istream> | |
包裝給定的抽象裝置(std::basic_streambuf) 並提供高階輸入介面 (類模板) | |
包裝給定的抽象裝置(std::basic_streambuf) 並提供高階輸入/輸出介面 (類模板) | |
檔案 I/O 實現 | |
定義於標頭檔案
<fstream> | |
實現原始檔案裝置 (類模板) | |
實現高階檔案流輸入操作 (類模板) | |
實現高階檔案流輸出操作 (類模板) | |
實現高階檔案流輸入/輸出操作 (類模板) | |
字串 I/O 實現 | |
定義於標頭檔案
<sstream> | |
實現原始字串裝置 (類模板) | |
實現高階字串流輸入操作 (類模板) | |
實現高階字串流輸出操作 (類模板) | |
實現高階字串流輸入/輸出操作 (類模板) | |
陣列 I/O 實現 | |
定義於標頭檔案
<spanstream> | |
(C++23) |
實現原始固定字元緩衝區裝置 (類模板) |
(C++23) |
實現固定字元緩衝區輸入操作 (類模板) |
(C++23) |
實現固定字元緩衝區輸出操作 (類模板) |
(C++23) |
實現固定字元緩衝區輸入/輸出操作 (類模板) |
定義於標頭檔案
<strstream> | |
(在 C++98 中已廢棄)(在 C++26 中已移除) |
實現原始字元陣列裝置 (類) |
(在 C++98 中已廢棄)(在 C++26 中已移除) |
實現字元陣列輸入操作 (類) |
(在 C++98 中已廢棄)(在 C++26 中已移除) |
實現字元陣列輸出操作 (類) |
(在 C++98 中已廢棄)(在 C++26 中已移除) |
實現字元陣列輸入/輸出操作 (類) |
同步輸出 (自 C++20 起) | |
定義於標頭檔案
<syncstream> | |
(C++20) |
同步輸出裝置包裝器 (類模板) |
(C++20) |
同步輸出流包裝器 (類模板) |
[編輯] 型別定義
在名稱空間 std
中提供了以下常用字元型別的型別定義
[編輯] 預定義標準流物件
定義於標頭檔案
<iostream> | |
從標準 C 輸入流 stdin 讀取 (全域性物件) | |
寫入標準 C 輸出流 stdout (全域性物件) | |
寫入標準 C 錯誤流 stderr,無緩衝 (全域性物件) | |
寫入標準 C 錯誤流 stderr (全域性物件) |
[編輯] I/O 操作器
基於流的 I/O 庫使用I/O 操作器(例如 std::boolalpha, std::hex 等)來控制流的行為。
[編輯] 型別
定義了以下輔助型別
定義於標頭檔案
<ios> | |
表示相對檔案/流位置(從 fpos 偏移),足以表示任何檔案大小 (型別定義) | |
表示 I/O 操作中傳輸的字元數或 I/O 緩衝區的大小 (型別定義) | |
表示流或檔案中的絕對位置 (類模板) |
提供了以下 std::fpos<std::mbstate_t> 的型別定義名稱
定義於標頭檔案
<iosfwd> | |
型別 | 定義 |
std::streampos
|
std::fpos<std::char_traits<char>::state_type> |
std::wstreampos
|
std::fpos<std::char_traits<wchar_t>::state_type> |
std::u8streampos (C++20) |
std::fpos<std::char_traits<char8_t>::state_type> |
std::u16streampos (C++11) |
std::fpos<std::char_traits<char16_t>::state_type> |
std::u32streampos (C++11) |
std::fpos<std::char_traits<char32_t>::state_type> |
[編輯] 錯誤類別介面 (自 C++11 起)
定義於標頭檔案
<ios> | |
(C++11) |
I/O 流錯誤碼 (列舉) |
(C++11) |
標識 iostream 錯誤類別 (函式) |
[編輯] 列印函式 (自 C++23 起)
支援 Unicode 的列印函式系列,對已格式化的文字執行格式化 I/O。它們帶來了 std::format 的所有效能優勢,預設情況下與區域設定無關,減少了全域性狀態,避免了分配臨時 std::string 物件並呼叫 operator<<,並且通常比iostream和stdio更高效。
提供了以下類列印函式
定義於標頭檔案
<print> | |
(C++23) |
使用引數的格式化表示列印到 stdout 或檔案流 (函式模板) |
(C++23) |
與 std::print 相同,但每次列印都以額外的換行符終止 (函式模板) |
使用型別擦除的引數表示列印到支援 Unicode 的 stdout 或檔案流 (函式) | |
使用型別擦除的引數表示列印到 stdout 或檔案流 (函式) | |
定義於標頭檔案
<ostream> | |
(C++23) |
輸出引數的格式化表示 (函式模板) |
(C++23) |
輸出帶附加 '\n' 的引數格式化表示 (函式模板) |
[編輯] C 風格 I/O
C++ 還包含C 定義的輸入/輸出函式,例如 std::fopen、std::getc 等。
[編輯] 另請參閱
檔案系統庫 (自 C++17 起) |