#include <iostream>
int main()
{
int count(0);
while (count < 10)
{
if (count == 5)
continue;
std::cout << count << " ";
++count;
}
return 0;
}
我希望程序在进入无限循环之前打印出来1 2 3 4
,但事实并非如此。我的周期马上开始。但是,如果我将行更改std::cout << count << " ";
为
std::cout << count << " " << std::endl;
,则输出将发生1 2 3 4
(但在列中)。问题:为什么在第一种情况下不显示数字?
因为它
cout
缓冲输出 - 将数字写入终端在时间上是“昂贵的”,它们最终会在一个临时缓冲区中。而且由于程序循环,它们将永远保留在此缓冲区中。endl
不仅翻译字符串,还导致缓冲区被刷新。要在没有换行符的情况下刷新缓冲区,请使用
cout << flush;