cout<< “text”仅在部分时间显示

时间:2011-10-26 06:09:49

标签: c++ buffer flush cout

我学会了在cout语句结束时使用endl来刷新缓冲区的艰难方法。令我困惑的是为什么有时只需要endl。通常我可以做到

cout << "test";

它会显示测试。但是在一个长控制台程序的中间,我将有一个类似的cout语句,什么都不会显示,代码将不会继续。将endl添加到末尾可以通过刷新缓冲区并显示文本来解决问题。但是什么原因导致缓冲区在某些情况下自动刷新并在其他情况下手动刷新?我无法提供任何示例代码,因为我不知道如何重现问题,但我假设大多数人已经看过这个。

2 个答案:

答案 0 :(得分:2)

当缓冲区达到一定长度或程序正常终止时,刷新缓冲区。

答案 1 :(得分:1)

自动刷新缓冲区的时间和原因取决于您正在处理的特定平台的实施者。您不应该对何时刷新缓冲区做出任何假设或猜测。

如果要显示文本,只需添加std :: endl即可。 ;)