输入文件流 —— 读文件,用法同 cin。
文件操作与异常处理
把数据存到硬盘、读回来;用 try/catch 优雅地应对出错。(时间复杂度见专题)
一、文件流三件套
输出文件流 —— 写文件,用法同 cout。
竞赛最省事:freopen 重定向
freopen("in.txt", "r", stdin); // 之后 cin/scanf 从文件读
freopen("out.txt", "w", stdout); // 之后 cout/printf 写到文件
二、互动演示:try / catch 怎么接住错误
模拟一段除法。点“正常输入”和“除数为 0”,看程序走哪条路 —— 出错时不崩溃,被 catch 接住。
try { 读入 a, b
if (b == 0) throw "除数为 0";
cout << a / b; // 正常输出
} catch (msg) { cout << "出错:" << msg; }
点一个按钮看执行路径。
三、参考代码
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// 写文件
ofstream fout("out.txt");
fout << "Hello" << endl;
fout.close();
// 读文件
ifstream fin("in.txt");
int x; fin >> x;
fin.close();
// 异常处理
int a = 6, b = 0;
try {
if (b == 0) throw "除数不能为 0";
cout << a / b;
} catch (const char* msg) {
cout << "出错了:" << msg;
}
return 0;
}
try 包住可能出错的代码,throw 抛出,catch 接住 —— 程序不至于直接崩溃。