C++ にはstd::endl
. これに使用するCの何かを知っている人はいますか?
3 に答える
std::endl
改行'\n'
文字を出力してから、出力ストリームをフラッシュする効果があります。
標準出力に出力する場合の C の同等物は次のようになります。
putchar('\n');
fflush(stdout);
しかし、ほとんどの場合、これfflush
は不要です。
プラットフォームに依存しない行末を提供する目的がないことにstd::endl
注意してください。文字はすでにプラットフォームに依存しない行末になっています。テキスト ストリームに書き込まれると、プラットフォームが使用する行末に変換されます ( Windows の場合、Unix の場合など)。'\n'
\r\n
\n
#include <stdio.h>
putchar ('\n'); /* To the stdout stream. */
printf ("\n"); /* Ditto. */
そして、任意のストリームのfp
場合、
fputc (fp, '\n');
これは、ライン バッファリングされたストリームとバッファリングされていないストリームで機能するはずです。fflush(NULL)
結果をすぐに確認したい場合は、完全にバッファリングされたストリームに が必要です。それで、どれがどれですか?C99 標準からの悲惨な詳細:
最初に開いたとき、標準エラー ストリームは完全にバッファリングされていません。標準入力および標準出力ストリームは、ストリームが対話型デバイスを参照していないと判断できる場合にのみ、完全にバッファリングされます。
std::endl
ストリームをフラッシュしますが、C で改行を印刷してもそれは行われません。したがって、使用する必要がありますfflush
。