我的代码如下所示
int i=0;
while(i<10){
cout<<"Hello";
sleep(1);
i++
}
在Windows中,代码在每个循环上打印,但在Linux中,它会在退出while循环后打印所有内容。如果我在 cout 的最后添加 endl ,那么它会在每个循环上打印。为什么会这样?任何人都可以解释这种行为吗?
答案 0 :(得分:4)
尝试使用cout.flush()
;也许这两个操作系统在缓冲标准输出方面有不同的策略。
答案 1 :(得分:1)
出于效率原因,有时标准流将使用缓冲区实现。进行大量微写操作可能会很慢,因此它会将您的写入存储起来,直到获得一定数量的数据,然后再将其全部写出来。
Endl强制它写出当前缓冲区,因此你会立即看到输出。
答案 2 :(得分:0)
#include <iostream>
using namespace std;
int main()
{
int i = 0;
while(i < 10){
cout << "Hello" << endl;
sleep(1);
++i;
}
}