C++文件读写核心是fstream流类,按需选用ifstream/ofstream/fstream,打开后检查is_open(),支持getline逐行读、>>分词读、read/write二进制操作,写入默认覆盖,追加需ios::app,二进制须加ios::binary模式。

C++ 读取和写入文件,核心就是用 fstream(文件流),它把文件当“流”来处理,和 cin/cout 用法很像,学起来不难。
打开文件:用 ifstream、ofstream 或 fstream
根据操作类型选对流类:
-
ifstream:只读文件(input file stream) -
ofstream:只写文件(output file stream) -
fstream:可读可写(更灵活,但注意打开模式)
打开时推荐用构造函数或 open(),并检查是否成功:
#include#include #include std::ifstream fin("data.txt"); if (!fin.is_open()) { std::cerr << "无法打开文件!\n"; return -1; } // 后续读取... fin.close(); // 记得关闭
读取文件:按行、按词、按字节都行
常用读取方式有三种,看需求选:
立即学习“C++免费学习笔记(深入)”;
-
getline(fin, str):一行一行读(推荐,能读空格) -
fin >> str:按空白符分隔读(跳过空格/换行,类似 cin) -
fin.get(ch)或fin.read(buf, n):逐字符或批量读字节(适合二进制)
std::string line;
while (std::getline(fin, line)) {
std::cout << line << "\n";
}
写入文件:输出流操作,和 cout 几乎一样
用 ofstream 打开后,直接用 写入即可:
- 默认是覆盖写入(
std::ofstream fout("out.txt")) - 想追加写入,加
std::ios::app模式:ofstream fout("out.txt", std::ios::app) - 写入失败可用
fout.fail()检查
std::ofstream fout("result.txt");
fout << "姓名:张三\n";
fout << "分数:95\n";
fout << "状态:通过\n";
fout.close();
二进制文件操作:加 ios::binary 模式
读写图片、音频、结构体等原始数据,必须用二进制模式,避免换行符被自动转换:
- 打开时加上
std::ios::binary - 用
read()/write()配合reinterpret_cast处理内存块 - 注意结构体可能有内存对齐,跨平台慎用
int val = 12345;
std::ofstream binout("data.bin", std::ios::binary);
binout.write(reinterpret_cast(&val), sizeof(val));
binout.close();
基本上就这些。关键是选对流类型、开对模式、读写后检查状态、用完记得 close —— 不复杂但容易忽略。









