0
我有一个非常简单的程序,打印行使用cout和每行后睡觉。一切都很好,约7次迭代,因为缓冲区在任何时候都不会被刷新。之后,我认为只有缓冲区的一部分在每次迭代时都被刷新。我不明白缓冲输出和cout
我对这种行为的几个问题:
- 如果缓冲区足以容纳〜7线输出的所谓大,为什么是缓冲液冲洗一次一个行?
- 如果这种缓冲区确实以这种方式刷新,这有什么好处?为什么整个缓冲区不能立即刷新?
这只是一个巧合,恰好相同数量的字符被刷新到输出中作为我的行长度,或者是基于行尾分隔符(如'\ n')内部刷新的cout缓冲区?
int main(){ for(int i = 0; i < 100; ++i){ std::cout << "This is line " << i << '\n'; Sleep(1000); } return 0; }
每隔一秒就会打印一次,就像您预期的一样,对我来说,无论是否带'\ n'。 –