C++文件读写核心是fstream流类,按需选用ifstream/ofstream/fstream,打开后检查is_open(),支持getline逐行读、>>分词读、read/write二进制操作,写入默认覆盖,追加需ios::app,二进制须加ios::binary模式。
C++ 读取和写入文件,核心就是用 fstream(文件流),它把文件当“流”来处理,和 cin/cout 用法很像,学起来不难。
根据操作类型选对流类:
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(); // 记得关闭
常用读取方式有三种,看需求选:
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";
}
用 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();
读写图片、音频、结构体等原始数据,必须用二进制模式,避免换行符被自动转换:
打开时加上 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 —— 不复杂但容易忽略。