随机打印程序,尽管sleep()函数,一次打印多个输出?

时间:2014-02-21 11:11:25

标签: c++ terminal console sleep usleep

所以,我有以下程序。它的作用是,它在控制台上以宽度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上都尝试了这个,这是完全相同的。

1 个答案:

答案 0 :(得分:0)

是的,输出确实被缓冲了。

使用std::cout.flush();手动刷新。

作为注释,std::endl(附加一个新行)和刷新。