c++ - 仅手动冲洗 cout

标签 c++ stream cout flush

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

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

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

最佳答案

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

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

关于c++ - 仅手动冲洗 cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30314985/

相关文章:

c++ - 无法为二维数组对象成员赋值

c++ - 如何提高此 MFC 代码的性能?

javascript - 解析流而不进行裁剪

node.js - 管道未启动后nodejs流完成回调

c++ - 将换行符插入输出流

c++ - 删除矩阵元素并在 rcpp 中为其赋予新的大小和元素

c++ - 根据不同条件初始化类模板的成员

javascript - 在 NodeJS 中写入文件时内存不足

在对象之前打印的 C++ 无意义对象

C++ cout 对齐输出数字