3

重複の可能性:
std :: endlは各プラットフォームで正確に何を表していますか?

std :: endlが、、、またはプラットフォームに応じて返されるのか、それとも常に1つに固執するのかを理解しようとしています\r\n\n\r

4

2 に答える 2

13

std::endlの単なる「省略形」です'\n' << std::flush。プラットフォームに依存しません。

ただし、'\n'それ自体はプラットフォームごとに異なる方法で処理され、ストリームがテキスト モードで開かれている場合は、、、または (またはそのようなもの)'\r\n''\n'置き換えられます。'\r'

于 2013-01-21T20:02:36.163 に答える
2

'\ n'改行を出力します(適切なプラットフォーム固有の表現であるため、Windowsでは "\ r \ n"が生成されます)。std :: endlは同じことを行い、それをフラッシュします。

std::endlの代わりに'\n'を使用します; 改行を出力しようとするとき、しかしstd::endlそれをフラッシュしようとするとき使用します。不必要なフラッシュはアプリケーションのパフォーマンスを低下させます。ファイルI/Oは、ユーザーI/O以外で最も遅い操作の1つであることがわかっています。

于 2013-01-21T20:09:02.713 に答える