仅手动冲洗 cout

Flush cout manually only

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

我的问题是我有一些使用多个 std::endl 的输出,因此刷新了输出。这对我的程序的性能非常不利,并且还会导致很多图形故障,因为我经常跳来跳去。

所以我的问题是我是否可以告诉 std::cout 等待下一次刷新,直到我明确调用 std::cout.flush() 或将 std::flush 流式传输到 std::cout.
如果这是可能的,我也想知道我该如何扭转它,因为它对我来说并不总是有意义。

使用 std::cout << '\n' 而不是 std::endl。这避免了在每一行之后刷新。 std::endl 将始终刷新,因为这是它的目的。没有禁用该行为的选项。但是,根本不需要使用 std::endl。最终,您无法避免所有刷新,因为 std::cout 的缓冲区是有限的,因此最终,无论您使用 std::endl 还是 '\n'.

,输出都会被刷新

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