2016-03-25 36 views
4

は私がプログラミングの初心者だけど、私は昨日の自分自身を教え始め、私はすべてを取得してきたが、私は正直、誰が説明していないstd :: cout << xの間のdiffrenceは何ですか;とstd :: cout << x << std :: endl ;?

std::cout << x; 

std::cout << x << std::endl; 

の違いを理解していませんこれは私にとって、私は安全な側にとどまるように求めています。

+0

[さらに読む](http://stackoverflow.com/q/213907/5583153) – Nacho

+0

[私のこの回答](http://stackoverflow.com/a/29701830/1938163)潜在力の理解に役立つかもしれません意味: –

答えて

11

endlストリームに改行を書き込むので、後続の出力が次の行に表示されます。また、ストリームのバッファをフラッシュします。通常はcausing a slow-downです。

このフラッシングは、時間の99%がendlで間違いであることを意味し、代わりに"\n"(または'\n')と書いてください。あなたが本当にストリームをフラッシュしたい場合は、私はそれが代わりにstd::flushを呼び出すことによってそれを明示的にするために、より良いことだと思う:

std::cout << x << '\n' << std::flush; 
限り、実行時のアクションが行くように、これは std::endlを使用するのと同じですが、という点で

あなたの意思を明確にするには、それはと大幅に優れています。

+5

読者の役に立つかもしれない観察: 'std :: cout <<"のようなプロンプトを出力したい場合、あなたの名前を入力してください: ";'、あなたは(デフォルトで)使用する必要はありません'std :: cin'からの入力を試みる前に' endl'または 'flush'を実行します。 –

0

std::endlは、ストリームに改行コードを追加し、出力バッファもフラッシュし、std::cout << xxを印刷しているだけです。 ですから、コード

cout << 5; 
cout << 5; 

を得た場合、それが出力として

になりますが、あなたは最初coutendlを追加した場合、出力は

になります

私は本当にあなたはそれがENDLよりもはるかに優れている'\n'を使用することですお勧めしますどのような。

+0

"私は本当にあなたが '\ n'それはendlよりはるかに優れていることをお勧めします" 何のために良い?パフォーマンス?他に何がありますか? – KABoissonneault

+0

パフォーマンスはあなたにとって不十分ですか? –

+0

私はそれを無料で入手すると良いです。それが他の問題を引き起こすことができるなら、私はむしろそれを避けるだろう。正直言って、私は個人的にストリームの代わりに 'printf'をラップするためのラッパーを使っています – KABoissonneault

関連する問題

 関連する問題