在开发代码时,我有许多控制台日志(std::clog)和一些控制台输出(std::cout)。但是现在,我想在线提交我的源代码,我想禁用所有控制台日志记录(clog),但保留控制台输出(cout)。
我当然可以注释我所有的//std::clog,但是有没有更好的方法来禁用我的源文件中的所有日志记录呢?
发布于 2016-08-26 15:52:25
您可以重定向clog,创建自己的ofstream,并使用rdbuf函数。
std::ofstream nullstream;
std::clog.rdbuf(nullstream.rdbuf());发布于 2016-08-26 16:04:42
从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状态将使其静默丢弃任何输出,直到故障位被清除。
https://stackoverflow.com/questions/39161002
复制相似问题