我知道C++默认支持的所有流IO都是带缓冲的。
这意味着要输出的数据被放入缓冲区直到满了,然后发送到输出设备,同样地,对于输入,数据在缓冲区为空时读取...所有这些都是为了最小化昂贵的系统调用次数。
但是如何验证这种行为呢?我的意思是考虑以下代码:
int main()
{
cout << "Hello world\n";
return 0
}
这里缓冲是什么意思?我知道有缓冲发生,但怎样解释它呢?输出立即出现在屏幕上,那么有哪些代码示例可以真正看到缓冲输入/输出的实际情况呢?
std::cout
通常是有缓冲的。(这与C中的stdout
不同,如果它连接到交互设备,则为行缓冲,否则为完全缓冲。C++没有行缓冲的概念;使用std::endl
可以有效地模拟它。) - James Kanze