我希望创建一个灵活的日志记录器类。我想让它能够将数据输出到文件或标准输出。此外,我想使用流。该类应该像下面这样:
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
测试是否要写入文件或标准输出,使用“C方式”(使用FILE*
和fprintf
)等),但我确信有一种使用C++流的好方法来实现这一点。但我似乎找不到如何做到这一点的方法。请问有人可以帮我吗?
#include <fstream>
头文件。我不确定你所说的“不能传递额外参数”是什么意思(要向什么传递额外的参数?你想做什么?) - utnapistim