名稱空間
變體
操作

輸入/輸出庫

來自 cppreference.com
< cpp

C++ 包含以下輸入/輸出庫:一個OOP 風格基於流的 I/O基於列印函式系列(自 C++23 起),以及一組標準的C 風格 I/O 函式。

目錄

[編輯] 基於流的 I/O

基於流的輸入/輸出庫圍繞抽象的輸入/輸出裝置組織。這些抽象裝置允許相同的程式碼處理檔案、記憶體流或執行即時任意操作(例如壓縮)的自定義介面卡裝置的輸入/輸出。

大多數類都是模板化的,因此它們可以適應任何基本字元型別。為最常見的字元型別(charwchar_t)提供了單獨的型別定義。這些類組織成以下層次結構

cpp/io/ios basecpp/io/basic ioscpp/io/basic istreamcpp/io/basic ifstreamcpp/io/basic istringstreamcpp/io/basic ostreamcpp/io/basic ofstreamcpp/io/basic ostringstreamcpp/io/basic fstreamcpp/io/basic stringstreamcpp/io/basic iostreamstd-io-complete-inheritance.svg

繼承圖

抽象
定義於標頭檔案 <ios>
管理格式化標誌和輸入/輸出異常
(類) [編輯]
管理任意流緩衝區
(類模板) [編輯]
定義於標頭檔案 <streambuf>
抽象原始裝置
(類模板) [編輯]
定義於標頭檔案 <ostream>
包裝給定的抽象裝置(std::basic_streambuf
並提供高階輸出介面
(類模板) [編輯]
定義於標頭檔案 <istream>
包裝給定的抽象裝置(std::basic_streambuf
並提供高階輸入介面
(類模板) [編輯]
包裝給定的抽象裝置(std::basic_streambuf
並提供高階輸入/輸出介面
(類模板) [編輯]
檔案 I/O 實現
定義於標頭檔案 <fstream>
實現原始檔案裝置
(類模板) [編輯]
實現高階檔案流輸入操作
(類模板) [編輯]
實現高階檔案流輸出操作
(類模板) [編輯]
實現高階檔案流輸入/輸出操作
(類模板) [編輯]
字串 I/O 實現
定義於標頭檔案 <sstream>
實現原始字串裝置
(類模板) [編輯]
實現高階字串流輸入操作
(類模板) [編輯]
實現高階字串流輸出操作
(類模板) [編輯]
實現高階字串流輸入/輸出操作
(類模板) [編輯]
陣列 I/O 實現
定義於標頭檔案 <spanstream>
實現原始固定字元緩衝區裝置
(類模板) [編輯]
實現固定字元緩衝區輸入操作
(類模板) [編輯]
實現固定字元緩衝區輸出操作
(類模板) [編輯]
實現固定字元緩衝區輸入/輸出操作
(類模板) [編輯]
定義於標頭檔案 <strstream>
(在 C++98 中已廢棄)(在 C++26 中已移除)
實現原始字元陣列裝置
(類) [編輯]
(在 C++98 中已廢棄)(在 C++26 中已移除)
實現字元陣列輸入操作
(類) [編輯]
(在 C++98 中已廢棄)(在 C++26 中已移除)
實現字元陣列輸出操作
(類) [編輯]
(在 C++98 中已廢棄)(在 C++26 中已移除)
實現字元陣列輸入/輸出操作
(類) [編輯]
同步輸出 (自 C++20 起)
定義於標頭檔案 <syncstream>
同步輸出裝置包裝器
(類模板) [編輯]
同步輸出流包裝器
(類模板) [編輯]

[編輯] 型別定義

在名稱空間 std 中提供了以下常用字元型別的型別定義

型別 定義
定義於標頭檔案 <ios>
std::ios std::basic_ios<char>
std::wios std::basic_ios<wchar_t>
定義於標頭檔案 <streambuf>
std::streambuf std::basic_streambuf<char>
std::wstreambuf std::basic_streambuf<wchar_t>
定義於標頭檔案 <istream>
std::istream std::basic_istream<char>
std::wistream std::basic_istream<wchar_t>
std::iostream std::basic_iostream<char>
std::wiostream std::basic_iostream<wchar_t>
定義於標頭檔案 <ostream>
std::ostream std::basic_ostream<char>
std::wostream std::basic_ostream<wchar_t>
定義於標頭檔案 <fstream>
std::filebuf std::basic_filebuf<char>
std::wfilebuf std::basic_filebuf<wchar_t>
std::ifstream std::basic_ifstream<char>
std::wifstream std::basic_ifstream<wchar_t>
std::ofstream std::basic_ofstream<char>
std::wofstream std::basic_ofstream<wchar_t>
std::fstream std::basic_fstream<char>
std::wfstream std::basic_fstream<wchar_t>
定義於標頭檔案 <sstream>
std::stringbuf std::basic_stringbuf<char>
std::wstringbuf std::basic_stringbuf<wchar_t>
std::istringstream std::basic_istringstream<char>
std::wistringstream std::basic_istringstream<wchar_t>
std::ostringstream std::basic_ostringstream<char>
std::wostringstream std::basic_ostringstream<wchar_t>
std::stringstream std::basic_stringstream<char>
std::wstringstream std::basic_stringstream<wchar_t>
定義於標頭檔案 <spanstream>
std::spanbuf (C++23) std::basic_spanbuf<char>
std::wspanbuf (C++23) std::basic_spanbuf<wchar_t>
std::ispanstream (C++23) std::basic_ispanstream<char>
std::wispanstream (C++23) std::basic_ispanstream<wchar_t>
std::ospanstream (C++23) std::basic_ospanstream<char>
std::wospanstream (C++23) std::basic_ospanstream<wchar_t>
std::spanstream (C++23) std::basic_spanstream<char>
std::wspanstream (C++23) std::basic_spanstream<wchar_t>
定義於標頭檔案 <syncstream>
std::syncbuf (C++20) std::basic_syncbuf<char>
std::wsyncbuf (C++20) std::basic_syncbuf<wchar_t>
std::osyncstream (C++20) std::basic_osyncstream<char>
std::wosyncstream (C++20) std::basic_osyncstream<wchar_t>

[編輯] 預定義標準流物件

定義於標頭檔案 <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 流錯誤碼
(列舉) [編輯]
標識 iostream 錯誤類別
(函式) [編輯]

[編輯] 列印函式 (自 C++23 起)

支援 Unicode 的列印函式系列,對已格式化的文字執行格式化 I/O。它們帶來了 std::format 的所有效能優勢,預設情況下與區域設定無關,減少了全域性狀態,避免了分配臨時 std::string 物件並呼叫 operator<<,並且通常比iostreamstdio更高效。

提供了以下類列印函式

定義於標頭檔案 <print>
(C++23)
使用引數的格式化表示列印到 stdout 或檔案流
(函式模板) [編輯]
(C++23)
std::print 相同,但每次列印都以額外的換行符終止
(函式模板) [編輯]
使用型別擦除的引數表示列印到支援 Unicode 的 stdout 或檔案流
(函式) [編輯]
使用型別擦除的引數表示列印到 stdout 或檔案流
(函式) [編輯]
 
定義於標頭檔案 <ostream>
輸出引數的格式化表示
(函式模板) [編輯]
輸出帶附加 '\n' 的引數格式化表示
(函式模板) [編輯]

[編輯] C 風格 I/O

C++ 還包含C 定義的輸入/輸出函式,例如 std::fopenstd::getc 等。

[編輯] 另請參閱

檔案系統庫 (自 C++17 起)