3

C++ にはstd::endl. これに使用するCの何かを知っている人はいますか?

4

3 に答える 3

11

std::endl改行'\n'文字を出力してから、出力ストリームをフラッシュする効果があります。

標準出力に出力する場合の C の同等物は次のようになります。

putchar('\n');
fflush(stdout);

しかし、ほとんどの場合、これfflushは不要です。

プラットフォームに依存しない行末を提供する目的がないことにstd::endl注意してください。文字はすでにプラットフォームに依存しない行末になっています。テキスト ストリームに書き込まれると、プラットフォームが使用する行末に変換されます ( Windows の場合、Unix の場合など)。'\n'\r\n\n

于 2012-09-16T10:04:11.717 に答える
6
#include <stdio.h>

putchar ('\n');   /* To the stdout stream. */
printf ("\n");    /* Ditto. */

そして、任意のストリームのfp場合、

fputc (fp, '\n');

これは、ライン バッファリングされたストリームとバッファリングされていないストリームで機能するはずです。fflush(NULL)結果をすぐに確認したい場合は、完全にバッファリングされたストリームに が必要です。それで、どれがどれですか?C99 標準からの悲惨な詳細:

最初に開いたとき、標準エラー ストリームは完全にバッファリングされていません。標準入力および標準出力ストリームは、ストリームが対話型デバイスを参照していないと判断できる場合にのみ、完全にバッファリングされます。

于 2012-09-16T10:02:30.380 に答える
2

std::endlストリームをフラッシュしますが、C で改行を印刷してもそれは行われません。したがって、使用する必要がありますfflush

于 2012-09-16T10:04:59.227 に答える