贝利信息

c++ I/O库详解 c++ iostream, fstream, sstream【教程】

日期:2026-01-07 00:00 / 作者:冰火之心
C++ I/O库核心是流抽象,统一为“读/写流”模式,主要掌握iostream(控制台)、fstream(文件)、sstream(内存字符串)三类;它们共享等接口,但连接对象不同。

C++ I/O 库的核心是流(stream)抽象,它把输入输出操作统一成“从流中读”或“向流中写”的模式,屏蔽底层设备差异。真正常用且必须掌握的是 iostream(控制台)、fstream(文件)和 sstream(内存字符串)三类流,它们共享同一套接口(如 >>read()write()),但背后连接的对象不同。

iostream:标准输入输出流,面向控制台

对应对象为 std::cin(输入)、std::cout(输出)、std::cerr(错误输出,不缓冲)、std::clog(日志输出,带缓冲)。它们默认关联到终端,无需手动打开/关闭。

fstream:文件流,读写磁盘文件

包含 std::ifstream(只读)、std::ofstream(只写)、std::fstream(读写)。构造或调用 open() 时指定文件路径和打开模式(如 std::ios::instd::ios::outstd::ios::appstd::ios::binary)。

sstream:字符串流,内存中模拟 I/O 操作

包括 std::istringstream(从 string 读)、std::ostringstream(写入 string)、std::stringstream(双向)。适合格式化解析与拼接,替代 C 风格的 sprintf 或手动字符串拼接。

流状态与错误处理不能忽略

每个流对象维护内部状态标志:goodbit(正常)、failbit(格式错误或读取失败)、badbit(底层操作失败,如磁盘满)、eofbit(到达结尾)。常用成员函数:good()fail()bad()eof()clear()(重置状态)、rdstate()(获取原始状态位)。