小杨用文件重定向实现在 log.txt 文件中输出日志,则下面横线上应填写( )。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream log_file("log.txt");
streambuf* original_cout = cout.rdbuf();
cout.rdbuf(log_file.rdbuf());
// 在此处填入代码
cout.rdbuf(original_cout); // 恢复原始的标准输出缓冲区
return 0;
}答案A。代码补全要考虑参数传递方式。如果需要修改实参,需用指针(*)传递。排序算法要理解每步比较的含义。
排序代码补全要理解每步比较的含义。选择排序找最小值时比较的是array[min]>array[j]。
【考点】文件重定向|缓冲区操作|运算符重载
GESP 四级"文件操作与输入输出"模块,命题人专门卡住一个认知盲区:学生以为 ofstream 写日志就等于所有输出都走重定向,完全没注意到前面那两行 rdbuf() 已经把 cout 的缓冲区接管了。这题就是看谁真看懂了 streambuf 的劫持机制。