C ++控制当cout刷新时

时间:2014-11-30 12:12:29

标签: c++

正如标题所暗示的那样,我正在寻找一种方法,只有当我明确地告诉它时才能cout'冲洗'。我知道这可以通过'缓存'我们要写入stringstringstream的内容来实现,但我正在寻找最有效的方法。

同样能够在此缓冲区中占用尾随换行符也很不错。我见过将\b写入cout的解决方案;但是我很确定这是不可靠的,因为冲洗(如果我错了,请纠正我)。

1 个答案:

答案 0 :(得分:1)

不使用stringstream,最好的办法就是阻止两种最常见的导致自动冲洗的方式:当你输出某些内容时以及明确地调用<< std::endl时。您可以通过设置std::ios_base::fmtflagsunitbuf标记来停用第一个。但是,当遇到新行时,这可能不会停止自动刷新。如果您的操作系统决定需要刷新每个\n字符,那么您无能为力(在标准C ++方面)。

因此,我建议手动缓冲。