gpt4 book ai didi

c++ - printf 到控制台窗口和文件?

转载 作者:行者123 更新时间:2023-11-28 08:08:41 28 4
gpt4 key购买 nike

我有很多使用 Visual Studio 2005 编译的 C++ 程序。它们大多是在控制台窗口中运行的小型服务器模块。无论如何,我遇到的问题是文本只能显示在控制台窗口或日志文件中,但不能同时显示在两者中。每个程序都有一个命令行选项来指定日志文件。这是我调用的将 stdout 和 stderr 重定向到文件的函数。

void consoleobj::setstdouterr(const stringobj& printstr)
{
#if !defined(_WIN32_WCE)
freopen(printstr.c_str(),"w",stdout);
#ifdef _MSC_VER
::SetStdHandle(STD_ERROR_HANDLE,GetStdHandle(STD_OUTPUT_HANDLE));
#endif
#endif
// make log msgs flush to log file(cout does this(on \n?), printf doesn't)
//now if both redir to same log file, msgs should be in right order
setvbuf(stdout, NULL, _IONBF, 0); //no buffering
setvbuf(stderr, NULL, _IONBF, 0); //no buffering
}//end method setstdouterr

有什么方法可以设置 stdout 和 stderr 同时写入控制台窗口和一个可选的日志文件吗?我见过重定向 cout 或包装函数的代码,但我们的打印语句都使用 printf,如果可能的话,我更愿意使用类似于我们的 consoleobj 库中的函数来设置它。谢谢!

最佳答案

而不是在您的代码中实现此功能。
您可以使用众所周知的实用程序 tee在 Unix 中。
它有一个名为 wtee.exe 的 Windows 版本.

C:\> programm | wtee log.txt

关于c++ - printf 到控制台窗口和文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9637503/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com