输入/输出库

来自cppreference.com
< cpp

C++ 包含两个输入/输出库:现代的、基于流的 I/O 库和 C 风格 I/O 函数的标准集合。

基于流的 I/O

基于流的输入/输出库围绕抽象的输入/输出设备组织。这些抽象设备允许相同代码处理对文件、内存流或随即进行任意操作(例如压缩)的自定义适配器设备的输入/输出。

大多数已经被类模板化,故它们能被适配到任何标准字符类型。为最常用的基本字符类型( charwchar_t )提供分离的 typedef 。以下列层次将类组织:

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++98 中弃用)
实现字符数组输入操作
(类)
(C++98 中弃用)
实现字符数组输出操作
(类)
(C++98 中弃用)
实现字符数组输入/输出操作
(类)
同步的输出
定义于头文件 <syncstream>
同步输出设备的包装
(类模板)
同步输出流的包装
(类模板)

typedef

提供对常用字符类型的下列 typedef :

typedef basic_ios<char>                ios;
typedef basic_ios<wchar_t>            wios;
 
typedef basic_streambuf<char>     streambuf;
typedef basic_streambuf<wchar_t> wstreambuf;
typedef basic_filebuf<char>         filebuf;
typedef basic_filebuf<wchar_t>     wfilebuf;
typedef basic_stringbuf<char>     stringbuf;
typedef basic_stringbuf<wchar_t> wstringbuf;
typedef basic_syncbuf<char>         syncbuf; // C++20
typedef basic_syncbuf<wchar_t>     wsyncbuf; // C++20
typedef basic_spanbuf<char>         spanbuf; // C++23
typedef basic_spanbuf<wchar_t>     wspanbuf; // C++23
 
typedef basic_istream<char>         istream;
typedef basic_istream<wchar_t>     wistream;
typedef basic_ostream<char>         ostream;
typedef basic_ostream<wchar_t>     wostream;
typedef basic_iostream<char>       iostream;
typedef basic_iostream<wchar_t>   wiostream;
 
typedef basic_ifstream<char>       ifstream;
typedef basic_ifstream<wchar_t>   wifstream;
typedef basic_ofstream<char>       ofstream;
typedef basic_ofstream<wchar_t>   wofstream;
typedef basic_fstream<char>         fstream;
typedef basic_fstream<wchar_t>     wfstream;
 
typedef basic_istringstream<char>     istringstream;
typedef basic_istringstream<wchar_t> wistringstream;
typedef basic_ostringstream<char>     ostringstream;
typedef basic_ostringstream<wchar_t> wostringstream;
typedef basic_stringstream<char>       stringstream;
typedef basic_stringstream<wchar_t>   wstringstream;
 
typedef basic_osyncstream<char>     osyncstream; // C++20
typedef basic_osyncstream<wchar_t> wosyncstream; // C++20
 
typedef basic_ispanstream<char>     ispanstream; // C++23
typedef basic_ispanstream<wchar_t> wispanstream; // C++23
typedef basic_ospanstream<char>     ospanstream; // C++23
typedef basic_ospanstream<wchar_t> wospanstream; // C++23
typedef basic_spanstream<char>       spanstream; // C++23
typedef basic_spanstream<wchar_t>   wspanstream; // C++23

预定义标准流对象

定义于头文件 <iostream>
从标准 C 输入流 stdin 中读取
(全局对象)
写入到标准 C 输出流 stdout
(全局对象)
写入到标准 C 错误流 stderr, 无缓冲
(全局对象)
写入到标准 C 错误流 stderr
(全局对象)

I/O 操纵符

基于流的 I/O 库用 I/O 操纵符(例如 std::boolalphastd::hex 等)控制流的行为。

类型

定义下列辅助类型:

定义于头文件 <ios>
表示相对的文件/流位置(距 fpos 的偏移),足以表示任何文件大小
(typedef)
表示一次 I/O 操作中转移的字符数或 I/O 缓冲区的大小
(typedef)
表示流或文件中的绝对位置
(类模板)

提供下列 std::fpos<std::mbstate_t> 的 typedef 名:

定义于头文件 <iosfwd>
Type Definition
streampos std::fpos<std::char_traits<char>::state_type>
wstreampos std::fpos<std::char_traits<wchar_t>::state_type>
u8streampos (C++20) std::fpos<std::char_traits<char8_t>::state_type>
u16streampos (C++11) std::fpos<std::char_traits<char16_t>::state_type>
u32streampos (C++11) std::fpos<std::char_traits<char32_t>::state_type>

错误类别接口

定义于头文件 <ios>
(C++11)
IO 流的错误码
(枚举)
鉴别 iostream 错误类别
(函数)

C 风格 I/O

C++ 亦包含 C 所定义的输入/输出函数,如 std::fopenstd::getc 等。