我想编写一个程序并使用户能够通过设置程序来显示进度或禁用该程序来控制程序包的日志记录。使用std :: ostream和std :: cout进行C++日志记录
我知道std::cout
是std::ostream
,区别在于std::cout
将结果重定向到标准输出。
我想让我的班级拥有一个std::ostream
成员,我会记录所有内容。然后,如果用户启用显示,该成员将被附加到std::cout
并显示结果,否则它不会。
我心目中是与此类似:
class log {
private:
std::ostream display;
public:
void func();
void show_display();
}
void log::func(){
display << "called by func";
}
void log::show_display(){
// redirect display to standard output
}
是否有类似于上面没有办法做到这一点?如果不是,我怎么能有类似的结果?
谢谢。
“不同之处在于std :: cout将结果直接放到屏幕上。” - 不,它写入标准输出 - 你可以从你的shell重定向。 –
@NeilButterworth这绝对是正确的,我很抱歉的错误。我将编辑 – Everyone
您可以将此用于忽略输出的流:http://stackoverflow.com/a/11826666/951890 –