第15题 下面哪种方式不能实现将字符串"Happy Spring!"输出重定向到文件log.txt( )。
 

别灰心,再试一次!

💡 真题解析

【答案】C

【考纲知识点】 文件操作以及输出重定向

【解析】

选项分析

选项A

freopen("log.txt", "w", stdout);
cout << "Happy Spring!" << endl;
fclose(stdout);

freopen函数用于将标准输出流stdout重定向到指定的文件log.txt。之后使用cout输出的内容都会被写入到log.txt文件中,最后使用fclose(stdout)关闭文件。所以该选项可以实现将字符串输出到文件。

选项B

std::ofstream outFile("log.txt");
outFile << "Happy Spring!" << endl;
outFile.close();

std::ofstream是C++中用于文件输出的流类,通过创建outFile对象并打开log.txt文件,使用outFile输出字符串到文件,最后关闭文件。因此该选项也能实现将字符串输出到文件。

选项C

std::ofstream outFile("log.txt");
cout << "Happy Spring!" << endl;
outFile.close();

虽然创建了outFile对象并打开了log.txt文件,但后续使用的是cout进行输出,cout是标准输出流,默认输出到控制台,并没有将输出重定向到文件,所以字符串不会被写入到log.txt文件中。故该选项不能实现将字符串输出到文件。

选项D

ofstream log_file("log.txt");
streambuf* org_cout = cout.rdbuf();
cout.rdbuf(log_file.rdbuf());
cout << "Happy Spring!" << endl;
cout.rdbuf(org_cout);

此选项通过cout.rdbuf()函数将cout的缓冲区替换为log_file的缓冲区,从而实现将cout的输出重定向到文件log.txt。输出完成后,再将cout的缓冲区恢复为原来的缓冲区。所以该选项可以实现将字符串输出到文件。

综上,答案选C。