在开发代码时,我有许多控制台日志记录(std::clog
)和一些控制台输出(std::cout
)。但是现在,我想在线提交我的源代码,我想禁用所有控制台日志记录(clog
),但保留控制台输出(cout
)
我当然可以评论我所有的//std::clog
,但是有没有更好的方法来禁用所有日志记录在我的源文件,?
你可以重定向clog,创建自己的ofstream并使用rdbuf函数
std::ofstream nullstream;
std::clog.rdbuf(nullstream.rdbuf());
摘自Andreas Papadopoulos对一个稍微不同的问题的回答——一定要在那里给他投票!
当然,你可以(这里的例子):
int main() {
std::clog << "First message" << std::endl;
std::clog.setstate(std::ios_base::failbit);
std::clog << "Second message" << std::endl;
std::clog.clear();
std::clog << "Last message" << std::endl;
return 0;
}
输出:
First message
Last message
这是因为将流置于fail
状态将使它静默地丢弃任何输出,直到failbit被清除。