

新闻资讯
技术学院使用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 仍需)。
两种常用方式,效果等价,但构造函数更简洁:
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() 更直接,专用于判断“是否已成功关联文件”。
根据数据格式灵活选择:
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;后续需调用 clea 并跳过非法字符才能继续。
r()
写法和 std::cout 完全一致:
fout
fout (需 )
fout.write(buffer, size);(配合 ios::binary 模式)写完不关文件或不刷新,数据可能还卡在缓冲区里。显式调用 flush() 或 close() 才真正落盘。用 RAII(对象析构自动关闭)最省心:std::ofstream fout("a.txt"); 离开作用域就自动关闭。
基本上就这些。关键不是记多少函数,而是理解“流对象 = 文件句柄 + 缓冲区 + 状态标志”,读写逻辑和控制台一致,只是目标换成了磁盘文件。