仅手动冲洗cout

时间:2015-05-19 00:43:39

标签: c++ stream cout flush

据我所知,将std::endl传输到std::cout会刷新它。我认为这种行为对大多数应用程序都有意义。

我的问题是我有一些使用多个std::endl的输出,因此会刷新输出。这对于我的程序的性能来说真的很糟糕,并且因为我跳得很多而引起很多图形故障。

所以我的问题是,如果我明确呼叫std::cout或将std::cout.flush()发送到std::flush,我可以告诉std::cout等待下次同花。 如果这是可能的,我也想知道我如何能够扭转这一点,因为它对我来说并不总是有意义。

1 个答案:

答案 0 :(得分:6)

使用std::cout << '\n'代替std::endl。这避免了每一行后的冲洗。 std::endl将永远冲洗,因为这是它的目的。没有选项可以禁用该行为。但是,根本不需要使用std::endl

如果要增加标准输出的缓冲区大小,可以尝试increase buffer for cout