STD :: Endlと\ Nの違い(プラットフォームの認識に関するもの)

StackOverflow https://stackoverflow.com//questions/9699280

  •  13-12-2019
  •  | 
  •  
役に立ちましたか?

解決

C++11§27.7.3.8 -

namespace std
{
    template <class charT, class traits>
        basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os);
}
.

効果:OS.put(OS.Widen( '\ N'))を呼び出して、OS.Flush()。

戻り値:OS。

それで、標準から、endlが出力ストリームバッファをフラッシュしながら、\nがNOTではありません。一般的に、新しい行を印刷するためにendlを使用しますが、出力バッファーがフラッシュされるたびに、常にフラッシュすることを留意する必要があります。

プラットフォームの意識について

標準から、両方ともまったく同じものを正確に同じように印刷することが明らかです。そのため、プラットフォームに依存している場合は、もう1つも同じになる必要があります。endlがプラットフォームに依存しないことを確認しているので、同じ\nの場合も同じです。

他のヒント

std::endl'\n'を出力してからストリームをフラッシュします。ほとんどのカジュアルな使用のために、それはあなたが使っているべきものです。ただし、大量のデータを出力する場合は、パフォーマンスが大幅に低下する可能性があります。その場合、'\n'を使用します。

編集:

プラットフォームの認識に関して:両方とも同じことを出力します。ストリームがテキストモードで開かれた場合、'\n'は、終了した行のプラットフォームに依存した表現を生じさせる。バイナリモードでは、1バイト(通常は0x0aですが、実際には使用する基本文字エンコーディング)が出力されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top