gpt4 book ai didi

C++ 将格式化数据打印到 std::cout 或文件(缓冲)

转载 作者:行者123 更新时间:2023-11-30 04:33:46 26 4
gpt4 key购买 nike

我一直在使用Petru's logging framework一点点。这是他的代码的一部分:

class Output2FILE
{
public:
static FILE*& Stream() {
static FILE* pStream = stderr;
return pStream;
}
};

这非常好,因为它无需任何操作即可简单地记录到 stderr,但具有随后可以设置为任何内容的功能,包括 stdout 和文件。但是,我认为这种方法不能用于格式化数据,因为需要使用 fprintf。

因此,我试图想出类似的东西,让人们默认使用 stdout 并且可以切换到文件,但对格式化数据使用“<<”运算符。

也许是

std::ostream myOutput(std::cout);

然后做 myOutput << "Hello" << 1 << 1.5; 的想法.然而,上面一行让编译器提示。

正确的做法是什么?

谢谢!

最佳答案

您可以使用指向 std::ostream 的指针,就像 FILE* 版本一样。

std::ostream* os = &std::cerr;
if (log_to_file) {
os = new std::ofstream("my.log");
}

*os << "Hello Log!" << std::endl;

if (log_to_file) { // or less 'safe' os != &std::cerr ...
// close file here
}

关于C++ 将格式化数据打印到 std::cout 或文件(缓冲),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6493260/

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