我有一些 C++ 代码使用 cout
语句进行调试,出于某种原因,除非我执行 std::cout.flush( );
结尾。
我不太明白为什么需要这个刷新操作。
有人有什么见解吗?
最佳答案
补充其他答案:您的调试语句应该转到 cerr
,因为:
- 它写入标准错误,这意味着在运行应用程序时,您可以通过重定向轻松地将“正常”程序输出与错误/调试信息分开;
- 最重要的是,
cerr
默认是unbuffered,也就是说,每次输出操作后,都会自动刷新自己,并在一般来说,这对于错误和调试输出是可取的。
(来源:C++ 标准,§27.3.1 ¶4-5,§27.4.2.1.2 表 83)
关于c++ - 标准输出并需要刷新它 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6214629/