所以,我有以下程序。它的作用是,它在控制台上以宽度10格式化它们时打印随机数字。
现在,当我添加睡眠功能时,我希望它每10毫秒(或更多)打印一个数字,但它的作用是,它每100 * 10毫秒打印100个输出。我在想,为什么会这样?输出是缓冲还是什么?
#include <unistd.h>
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <iomanip>
int main()
{
srand(time(0));
for (int i = 1; i < 1000000; i++)
{
usleep(10*1000); // No matter the input, the same thing happens
cout << setw(10) << rand()%(90*i) + 10*i;
}
}
我在windows和unix上都尝试了这个,这是完全相同的。
答案 0 :(得分:0)
是的,输出确实被缓冲了。
使用std::cout.flush();
手动刷新。
作为注释,std::endl
(附加一个新行)和刷新。