用fstream读写TXT文件需选对流类型并检查打开状态:ifstream逐行读取用getline(),ofstream写入可覆盖或追加,fstream同时读写需指定模式组合并注意seekg/seekp定位。

用 fstream 读写 TXT 文件,核心是选对流类型(ifstream、ofstream 或 fstream),正确打开文件,并检查是否成功。
读取文本文件(逐行 or 逐词)
推荐用 std::ifstream,配合 std::getline() 逐行读取最稳妥,避免空格截断;若用 >> 运算符则按空白符分隔(空格、制表、换行都会切开)。
示例:读取并打印每行内容
#include#include #include int main() { std::ifstream fin("data.txt"); if (!fin.is_open()) { std::cerr << "无法打开 data.txt\n"; return 1; } std::string line; while (std::getline(fin, line)) { std::cout << line << '\n'; } fin.close(); return 0; }
写入文本文件(覆盖 or 追加)
用 std::ofstream。默认是覆盖写入(std::ios::out);要追加,显式加上 std::ios::app 模式。
立即学习“C++免费学习笔记(深入)”;
- 覆盖写入:直接构造
ofstream("file.txt") - 追加写入:
ofstream("file.txt", std::ios::app) - 写入失败时,可用
!fout或fout.fail()判断
示例:向文件追加两行
#include#include int main() { std::ofstream fout("log.txt", std::ios::app); if (!fout) { std::cerr << "无法打开 log.txt\n"; return 1; } fout << "操作完成\n"; fout << "时间:2024-06-15\n"; fout.close(); return 0; }
同时读写一个文件(需谨慎)
用 std::fstream,但必须指定模式组合,例如:
-
std::fstream file("data.txt", std::ios::in | std::ios::out);—— 可读可写,文件必须存在 -
std::fstream file("data.txt", std::ios::in | std::ios::out | std::ios::trunc);—— 读写+清空原内容 -
std::fstream file("data.txt", std::ios::in | std::ios::out | std::ios::ate);—— 打开后定位到末尾
注意:读写切换时需调用 seekg()(读位置)或 seekp()(写位置),否则行为未定义。








