在开发代码时,我有许多控制台日志记录(std::clog
)和一些控制台输出(std::cout
)。但现在,我想在线提交我的源代码,我想禁用所有控制台日志记录(clog
),但保留控制台输出(cout
)
我可以肯定地评论我的所有//std::clog
,但有没有更好的方法来禁用我的源文件中的所有日志记录,?
答案 0 :(得分:7)
您可以重定向阻塞,创建自己的ofstream并使用rdbuf功能。
std::ofstream nullstream;
std::clog.rdbuf(nullstream.rdbuf());
答案 1 :(得分:1)
从Andreas Papadopoulos' answer复制到一个稍微不同的问题 - 请务必在那里投票!
当然,你可以(example here):
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
状态会使其静默地丢弃任何输出,直到故障清除被清除。