cbi*_*izz 0 c++ io fstream stream
所以我有一个C++程序,通常在它执行时将事物写入日志文件.这是使用fstream完成的.但是,现在我想要包含关闭日志记录的功能.基本上,我的代码看起来像这样:
bool isLogging;
fstream* logFilePtr;
Run Code Online (Sandbox Code Playgroud)
在我的代码中,有一堆语句如:
(*logFilePtr) << " Kernel call time in seconds: " << kTime << endl;
...
Run Code Online (Sandbox Code Playgroud)
现在,如果"isLogging"为真,我不希望这些打印.我可以用一堆if语句围绕它们,但我更喜欢比这更清洁的东西.我认为有一些方法可以采用C++流并将其重定向到"无",以便在使用<<运算符时,不会打印任何内容.
有谁知道如何重定向流,或有任何其他想法如何以优雅的方式处理这个?
谢谢,科林
你可以将它包装在一个类中.
class Log {
Log (fstream &s) : stream(s), enabled(false) { }
void Enable () { enabled = true; }
void Disable () { enabled = false; }
template<class T>
Log &operator<< (T const& rhs) {
if (enabled) stream << rhs;
return *this;
}
private:
fstream &stream;
bool enabled;
};
Run Code Online (Sandbox Code Playgroud)
这没有经过测试..但基本的想法应该在那里.