我是 C ++ 的新手,据我所知,使用转义序列'\n'
不会刷新输出缓冲区(就像使用endl
时一样),但是在我的情况下,在 Ubuntu 14.04 上的qt-creator下使用F11(步入)调试以下程序时,函数的输出(5
)直接打印到控制台。
#include <iostream>
void printValue(int nValue)
{
std::cout << nValue << '\n';
}
int main()
{
using namespace std;
printValue(5);
return 0;
}
当我从第i行的输出中删除'\n'
时。 5,输出推迟到执行结束。
答案 0 :(得分:2)
标准没有定义刷新时间,因此流可以随时刷新。
答案 1 :(得分:0)
如果在'\n'
中看到std::ostream
触发刷新,那么它实际上是依赖于实现的。
强制安全的方法是使用std::endl
。
答案 2 :(得分:0)
是的,endl
会导致刷新,但这并不意味着缓冲区不能因其他原因决定刷新自己。请参阅this reference,尤其是:
在许多实现中,标准输出是行缓冲的,并且写入&#39; \ n&#39;无论如何都会导致冲洗