2011-10-26 20 views
0

バッファをフラッシュするためにcout文の終わりでendlを使うのが難しい方法を学びました。私が混乱しているのは、なぜendlが必要なのかということだけです。通常はできます。cout << "text"は時間の一部しか表示されない

cout << "test"; 

テストが表示されます。しかし、長いコンソールプログラムの途中で、私は同様のcoutステートメントを持ち、何も表示されず、コードは移動しません。 endlを最後に追加すると、バッファをフラッシュしてテキストを表示することで問題を解決します。しかし、何が原因でバッファが自動的にフラッシュされ、手動でフラッシュされるのでしょうか?問題を再現する方法がわからないのでサンプルコードを提供できませんが、ほとんどの人がこれを見ていると仮定しています。

+0

ほとんどのライブラリは改行文字 '\ n'でフラッシュします。そのため、' endl'は必要ありません。また、改行が必要ない場合はもちろん、代わりに 'flush'を使用することもできます。 –

答えて

2

バッファが一定の長さに達するか、プログラムが正常に終了すると、バッファがフラッシュされます。

+0

私はcout << "test1"と書く。シン>> var;プログラムは終了せず、varが入力されるのを待ちます。ただし、test1は引き続き表示されます。バッファーはこれを「特定の長さ」に達しましたか?どのようなことが分かっていますか? – gsingh2011

+0

@ gsingh2011私は 'cin'がバッファをフラッシュすると思います。結局のところ、前に来たものを表示せずに入力することはできません。 –

+3

シネが何をしているか考えてみると、最初に画面に出力されたものがすべてフラッシュされることが理にかなっています。 – Nathanael

1

バッファが自動的にフラッシュされる時期と理由は、作業する特定のプラットフォームの実装者によって異なります。バッファーをフラッシュするタイミングについては、何も前提または推測しないでください。

テキストを表示する場合は、std :: endlを追加します。 ;)

関連する問題