我知道 endl
或调用 flush()
会刷新它。我还知道,当您在 cout
之后调用 cin
时,它也会刷新。以及程序退出时。 cout
flush 还有其他情况吗?
我只是写了一个简单的循环,我没有刷新它,但我可以看到它被打印到屏幕上。为什么?谢谢!
for (int i =0; i<399999; i++) {
cout<<i<<"\n";
}
此外,它完成的时间与 endl
相同,均为 7 秒左右。
for (int i =0; i<399999; i++) {
cout<<i<<endl;
}
最佳答案
标准没有严格的规则——只有 endl
会刷新,但是实现可以在它“喜欢”的任何时候刷新。
当然,400K 以下的所有数字的总和是 6 * 400K = 2.4MB,这不太可能适合缓冲区,而且循环运行速度足够快,您不会注意到它是否需要每个输出之间有一段时间。尝试这样的事情:
for(int i = 0; i < 100; i++)
{
cout<<i<<"\n";
Sleep(1000);
}
(如果您使用的是基于 Unix 的操作系统,请改用 sleep(1)
- 或者添加一个需要一些时间的循环等)
编辑:应该注意的是,这不能保证显示出任何差异。我知道在我的 Linux 机器上,如果您在这种特定类型的场景中没有刷新,它不会输出任何内容 - 但是,某些系统可能会执行“flush on\n”或类似的操作。
关于c++ - cout什么时候刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22345226/