【发布时间】:2026-01-01 02:05:02
【问题描述】:
我想创建一个灵活的记录器类。我希望它能够将数据输出到文件或标准输出。另外,我想使用流。该类应如下所示:
class Logger
{
private:
std::ostream m_out; // or ofstream, iostream? i don't know
public:
void useFile( std::string fname);
void useStdOut();
void log( symbol_id si, int val );
void log( symbol_id si, std::string str );
//etc..
};
symbol_id 是一个枚举并定义了格式。我想要实现的是能够轻松地从标准输出切换到文件,反之亦然(这是use* 方法的目的)。最好只使用m_out 并简单地编写m_out << "something"; 而不检查我是否要写入文件或标准输出。
我知道有很多方法可以解决这个问题(使用 if's 测试我是否要写入文件或标准输出,“C 方式”(使用 FILE* 和fprintf)) 等等,但我确信必须有一种方法可以用 C++ 流以一种很好的方式实现这一点。但我似乎无法找到如何做到这一点。有人可以帮帮我吗?
【问题讨论】: