有很多关于将stdout和stderr重定向到文件而不是控制台的文档。但是如何将其重新定向回来呢?下面的代码显示了我的意图,但仅输出“stdout is printed to console”一次。
我猜我需要获取控制台输出缓冲区,将其存储在某个地方,将stdout重定向到文件,然后恢复控制台缓冲区?
#pragma warning(disable:4996)
#include <cstdio>
int main()
{
std::printf("stdout is printed to console\n");
if (std::freopen("redir.txt", "w", stdout)) {
std::printf("stdout is redirected to a file\n"); // this is written to redir.txt
std::fclose(stdout);
std::printf("stdout is printed to console\n");
}
getchar();
return 0;
}