正如标题所暗示的那样,我正在寻找一种方法,只有当我明确地告诉它时才能cout
'冲洗'。我知道这可以通过'缓存'我们要写入string
或stringstream
的内容来实现,但我正在寻找最有效的方法。
同样能够在此缓冲区中占用尾随换行符也很不错。我见过将\b
写入cout
的解决方案;但是我很确定这是不可靠的,因为冲洗(如果我错了,请纠正我)。
答案 0 :(得分:1)
不使用stringstream
,最好的办法就是阻止两种最常见的导致自动冲洗的方式:当你输出某些内容时以及明确地调用<< std::endl
时。您可以通过设置std::ios_base::fmtflags
的unitbuf
标记来停用第一个。但是,当遇到新行时,这可能不会停止自动刷新。如果您的操作系统决定需要刷新每个\n
字符,那么您无能为力(在标准C ++方面)。
因此,我建议手动缓冲。