Skip to content

C++ 流体系导览

C++ I/O 以字符类型、字符特征和缓冲区为基础,通过状态位和格式标志提供统一的控制台、文件与字符串输入输出接口。

继承关系

text
ios_base
  └─ basic_ios<CharT, Traits>
       ├─ basic_istream  ─┐
       ├─ basic_ostream  ─┼─ basic_iostream
       └─ 关联 basic_streambuf

常用别名 std::istreamstd::ostream 分别是 char 特化;std::ifstreamstd::ofstream 管理文件缓冲区;std::stringstream 在内存字符串上读写。

输入状态

cpp
int value{};
while (std::cin >> value) {
    std::cout << value << '\n';
}

if (std::cin.eof()) {
    // 正常到达输入末尾
} else {
    // 格式错误或底层 I/O 错误
}

goodbit 表示正常,eofbit 表示到达末尾,failbit 表示格式提取失败,badbit 表示严重底层错误。清除状态后,还应处理导致失败的输入。

格式与性能

cpp
#include <iomanip>

std::cout << std::fixed << std::setprecision(2) << 3.14159;
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);

关闭与 C stdio 的同步可提升大量文本 I/O 性能,但此后不应随意混用 printfcout。解绑 cin 后,交互式提示需要主动 flush

RAII

文件流在析构时关闭文件。仍应在打开后检查状态,并在必须确认写入成功时显式调用 close() 后检查结果。

SIGNAL MAINTAINED · BUILT FROM MARKDOWN