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。