【发布时间】:2020-09-14 07:05:15
【问题描述】:
任务是从input.txt 读取输入并将输出写入output.txt。
但是,在完成上述任务后,现在应该在控制台上显示更多指令/输出。
开始了解 c++ 中的 freopen(),它在给定任务的前半部分工作得很好。但不幸的是,我不知道如何将输出再次重定向回控制台。
void writeIntoFile(){
freopen("input.txt","r",stdin); // Task 1. Reading from input.txt file
freopen("output.txt","w",stdout); // Task 2. Writing to output.txt file
printf("This sentence is redirected to a file.");
fclose(stdout);
printf("This sentence is redirected to console"); // Task 3. Write further output to console
}
我对 fclose() 的期望是它最终会写入文本文件,因此会进一步将输出写入控制台,但事实并非如此。我怎样才能完成任务 3。
【问题讨论】:
-
首先不要使用
freopen或重定向。如果您使用 C++ 编写,请使用 C++ 流,然后正常打开它然后写入。 -
我明白,但在那种情况下,我将不得不像 file>>text 一样单独编写所有输出;这可以通过 freopen() 自动完成,因此我选择了这个。
-
我们有不同的流对象,以便我们可以使用它们来获得最大的可读性和正确性。到处重新打开文件意味着你的代码很神秘,无法阅读。
-
更不用说“原始流(如果存在)已关闭。” -- 这可能是也可能不是有意的。
-
也许 rdbuf 是您正在寻找的? cplusplus.com/reference/ios/ios/rdbuf