下面哪种方式不能实现将字符串 Welcome to 2026! 输出重定向到文件 log.txt ( )。
A:freopen("log.txt", "w", stdout); cout << "Welcome to 2026!" << endl; fclose(stdout);
B:std::ofstream outFile("log.txt"); cout << "Welcome to 2026!" << endl; outFile.close();
C:ofstream log_file("log.txt"); streambuf* org_cout = cout.rdbuf(); cout.rdbuf(log_file.rdbuf()); cout << "Welcome to 2026!" << endl; cout.rdbuf(org_cout);
D:std::ofstream outFile("log.txt"); outFile << "Welcome to 2026!" << endl; outFile.close();
正确答案:B
答案解析
分析输出重定向机制时,需考察每种方法如何改变标准输出的目标位置。freopen通过C标准库重新绑定stdout文件指针;ofstream构造文件流对象用于写入数据;直接操作streambuf可替换cout的底层缓冲区,使其指向文件流缓冲区;而仅创建输出文件流但未关联到cout,则不会影响原本发送至标准输出的内容流向。重点在于判断各操作是否真正将原本输出至标准输出的数据引导至文件。
试卷来源:202603 CCF-GESP编程能力等级认证C++四级真题