所以,我有下面的程序。它的作用是打印随机数,同时在控制台上以 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上都尝试过这个,这是完全相同的事情。
是的,输出确实被缓冲了。
使用std::cout.flush();
手动刷新。
请注意,std::endl
(附加新行并)进行刷新。