gpt4 book ai didi

c++ - cout什么时候刷新?

转载 作者:可可西里 更新时间:2023-11-01 18:35:51 32 4
gpt4 key购买 nike

我知道 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com