、G ++ v5.2.1(および古いvxWorksの、およびOSE)
std::cout << std::endl;
出力バッファに改行文字を置くことを実証することが容易であり、次いでバッファをデバイスにフラッシュします。
しかし
std::cout << "\n";
は、出力バッファに改行文字を置くと、デバイスに出力しません。バッファ内の改行文字の出力をデバイスにトリガするには、将来の動作が必要になります。
このような2つのアクションは次のとおりです。のstd :: coutのバッファリングのフラッシュをトリガすることができますいくつかの他のアクションも
std::cout << std::flush; // will output the buffer'd new line char
std::cout << std::endl; // will output 2 new line chars
があります。
#include <unistd.h> // for Linux
void msDelay (int ms) { usleep(ms * 1000); }
int main(int, char**)
{
std::cout << "with endl and no delay " << std::endl;
std::cout << "with newline and 3 sec delay " << std::flush << "\n";
msDelay(3000);
std::cout << std::endl << " 2 newlines";
return(0);
}
そして、(申し訳ありませんが、私はここに彼の名前をコピーする方法がわからない)を知っている人のコメントごとに、いくつかの環境のための例外があります。
'fputc( '\ n'、stdout)'? –
すべての例で改行文字が出力されます(オプションで、オペレーティングシステムによっては改行文字が前に付きます)。キャリッジリターンは '\ r'と表示されます。 – kfx
_ @ Harrison Tran_実際の効果は何ですか?テキストフォーマット出力のためのバインディングの中には、 '' \ r ''を拡張することや、 '' flush() ''を明示的に呼び出すことも考えられます。 –