我想編寫一個程序並使用戶能夠通過設置程序來顯示進度或禁用該程序來控制程序包的日誌記錄。使用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 –