C++ 强制 std::cout 刷新(打印到屏幕)

c++ force std::cout flush (print to screen)

本文关键字:打印 屏幕 刷新 强制 std cout C++      更新时间:2023-10-16

我有如下代码:

std::cout << "Beginning computations..."; // output 1
computations();
std::cout << " done!n";                  // output 2

然而,问题是输出 #1 和输出 #2 经常(几乎)同时出现。 也就是说,输出 #1 通常直到computations()返回后才会打印到屏幕上。 由于输出 #1 的整个目的是指示后台正在发生某些事情(从而鼓励用户耐心等待),因此这个问题不好。

有没有办法强制在computations()调用之前打印std::cout缓冲区? 或者,是否有其他方法(使用std::cout以外的其他方法)打印到标准输出可以解决此问题?

只需插入std::flush

std::cout << "Beginning computations..." << std::flush;

另请注意,插入std::endl也会在写换行符后刷新。

除了Joseph Mansfield的答案,std::endl也做了冲洗(除了一个新行)。

输出序列 os 中插入一个结束行字符,并像调用 os.put(os.widen('')) 后跟 os.flush() 一样刷新它。