c ++ force std :: cout flush(打印到屏幕)

时间:2014-02-25 21:35:30

标签: c++ cout flush

我有以下代码:

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

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

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

2 个答案:

答案 0 :(得分:47)

只需插入std::flush

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

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

答案 1 :(得分:5)

除了约瑟夫·曼斯菲尔德的答案之外,std::endl也会进行同花顺(除了新的一行)。

  

将一个endline字符插入到输出序列os中并将其刷新,就像调用os.put(os.widen('\ n'))后跟os.flush()一样。