将输出重定向到文件然后返回到 C++ 中的控制台
Redirecting output to file then back to console in C++
任务是从 input.txt
读取输入并将输出写入 output.txt
。
但是,在完成上述任务后,现在应该向控制台显示更多 instructions/output。
开始了解 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。
可能您正在寻找的是 doomista 在评论中提到的 rdbuf()。
这是一种重定向输出的方法。
#include <iostream>
#include <fstream>
int main()
{
/** backup cout buffer and redirect to out.txt **/
std::ofstream out("out.txt");
auto *coutbuf = std::cout.rdbuf();
std::cout.rdbuf(out.rdbuf());
std::cout << "This will be redirected to file out.txt" << std::endl;
/** reset cout buffer **/
std::cout.rdbuf(coutbuf);
std::cout << "This will be printed on console" << std::endl;
return 0;
}
任务是从 input.txt
读取输入并将输出写入 output.txt
。
但是,在完成上述任务后,现在应该向控制台显示更多 instructions/output。
开始了解 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。
可能您正在寻找的是 doomista 在评论中提到的 rdbuf()。
这是一种重定向输出的方法。
#include <iostream>
#include <fstream>
int main()
{
/** backup cout buffer and redirect to out.txt **/
std::ofstream out("out.txt");
auto *coutbuf = std::cout.rdbuf();
std::cout.rdbuf(out.rdbuf());
std::cout << "This will be redirected to file out.txt" << std::endl;
/** reset cout buffer **/
std::cout.rdbuf(coutbuf);
std::cout << "This will be printed on console" << std::endl;
return 0;
}