0

次のような状況で std::ostringstream オブジェクトに flush() メンバー関数を使用する人が非常に多いのはなぜですか:

#include <iostream>
#include <sstream>

int main()
{
   float f = 12.345f / 100;
   std::ostringstream ios;
   ios << f;
   ios.flush();
   std::cout << f << " : " << ios.str() << std::endl;
}

この呼び出しなしの出力は同じになります。

なぜ?また、いつ flush() メンバー関数を使用する必要がありますか?

4

1 に答える 1

2

そのような状況でフラッシュを使用する正当な理由はありません。こんなにたくさんの人がどこにいるのか知りたいです。個人的には、フラッシュがそのように使用されたのを見たことを思い出せません。

ほとんどの場合、私はそのようなコードを迷信のせいにしてしまいます。誰かがバグを抱えていましたが、それは理解できませんでしたが、フラッシュを試みたところ、不思議なことにバグは消えました。バグが消えた本当の理由はフラッシュの使用ではありませんが、使用がスタックしています。

バッファリングされたデータをすぐに出力したい場合は、バッファリングされたストリームでフラッシュを使用する必要があります。

于 2012-10-21T20:30:36.560 に答える