我有一个包含很多std::cerr的程序,它直接输出到我的终端。我想知道std::cerrstd::cout有什么区别。以及如何禁用std::cerr(我不想将其输出到屏幕上)?

最佳答案

正如其他人提到的,如果这是一个类似Unix的系统,则2>/dev/null会将stderr(2)重定向到天空中的大存储桶(/dev/null)。

但是这里没有人解释stderr和stdout之间的区别是什么,所以我觉得有必要至少谈一下这个话题。

std::cout是标准输出流。这通常是您的程序应在其中输出消息的位置。

std::cerr是标准错误流。通常用于错误消息。

这样,如果您的程序“包含许多cerr”输出,那么可能值得一看为什么打印了这么多错误消息,而不是简单地隐藏消息。当然,这是假设您不仅仅因为某种原因而碰巧会向stderr发出大量无错误输出的程序。

10-04 13:31