使用cout时输出缓冲区是否自动刷新?

时间:2014-03-13 20:00:19

标签: c++ buffer output cout flush

我想知道每次使用cout时输出缓冲区是否会自动刷新和清空。 如果没有刷新,我有什么方法可以检查内容"输出缓冲区? 我指的是您只使用cout且不涉及endl的情况。

请考虑以下代码:

cout << "Hello, how are you?";    //Without using endl

我使用stringstream来检查flush如何影响缓冲区。我有以下代码,但为什么输出仍然显示&#34; GoodDay&#34;即使我已经冲了它?

string str;
stringstream ss;
ss << "GoodDay";
ss << flush;
ss >> str;
cout << str;

1 个答案:

答案 0 :(得分:0)

stringstream不应该在flush上放松它的内容。实际上,flush操纵器无论如何都没有任何意义,因为任何输入都会立即写入stringstream包装的缓冲区。这就是你仍然看到“GoodDay”的原因。