使用fstream读写文件需按需求选择流类型:ifstream只读、ofstream只写、fstream读写兼备;打开后像cin/cout操作,务必检查is_open()并及时close()。

用 fstream 读写文件,核心是选对流类型(ifstream、ofstream 或 fstream),打开文件后像操作 cin/cout 一样处理数据,最后记得关闭。
打开文件前:选对流类型
不是所有情况都用 fstream。按需求选更清晰、更安全:
-
ifstream:只读文件,自动设为ios::in模式 -
ofstream:只写文件,自动设为ios::out模式(默认会清空原内容) -
fstream:读写兼备,需手动指定模式,比如ios::in | ios::out
头文件统一包含 ,不用额外加 iostream>(但若用到 cout/cin 仍需)。
打开文件:推荐用构造函数或 open(),别忽略失败检查
两种常用方式,效果等价,但构造函数更简洁:
立即学习“C++免费学习笔记(深入)”;
- 构造时打开:
std::ifstream fin("data.txt"); - 先定义再打开:
std::ofstream fout; fout.open("output.txt");
无论哪种,打开后务必检查是否成功:
if (!fin.is_open()) {
std::cerr << "无法打开输入文件\n";
return 1;
}
注意:is_open() 比 fail() 或 good() 更直接,专用于判断“是否已成功关联文件”。
GNU makefile中文手册 pdf,文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。同时重点讨论如何为一个工程编写Makefile。阅读本书之前,读者应该对GNU的工具链和Linux的一些常用编程工具有一定的了解。诸如:gcc、as、ar、ld、yacc等本文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。重点讨论如何使用make来管理软件工程、以及如何为工程编写正确的Makefile。 本手册不是一个纯粹的语言翻译版本,其中对GNU make的一些语法
读取文件:按行、按词、按字节,各用各的函数
根据数据格式灵活选择:
- 整行读取(含空格,推荐处理文本):
std::string line; while (std::getline(fin, line)) { ... } - 按空白分隔读单词(跳过空格/换行):
std::string word; while (fin >> word) { ... } - 读单个字符:
char c; while (fin.get(c)) { ... }(get()不跳过空白) - 读固定长度数据(如二进制):
fin.read(buffer, size);
注意:用 >> 读数字时,遇到非数字字符会停止并置 flag 为 failbit;后续需调用 clear() 并跳过非法字符才能继续。
写入文件:和 cout 几乎一样,但要注意缓冲区刷新
写法和 std::cout 完全一致:
- 输出字符串、数字、变量:
fout - 格式控制(如宽度、精度):
fout (需) - 写入二进制:
fout.write(buffer, size);(配合ios::binary模式)
写完不关文件或不刷新,数据可能还卡在缓冲区里。显式调用 flush() 或 close() 才真正落盘。用 RAII(对象析构自动关闭)最省心:std::ofstream fout("a.txt"); 离开作用域就自动关闭。
基本上就这些。关键不是记多少函数,而是理解“流对象 = 文件句柄 + 缓冲区 + 状态标志”,读写逻辑和控制台一致,只是目标换成了磁盘文件。









