2012-05-11 21 views
9

ループに置かれた文字列は印刷されません。プログラムは、あなたはおそらく、ここで見ている何types.hでヘッダファイルがなぜ私の出力がすぐに表示されないのですか?

for(int i=0;i<9;i++) 
{ 
    cout<<"||"; 
    sleep(1); 
} 
+0

try 'cout <<" || " << endl; ' –

+0

あなたはエラーを投稿できますか? –

答えて

7

を含まSYS /で、G ++の助けを借りて書かれたバッファリングされた出力の効果です。一般に、出力はstd::endlが使用されるまで実際には書き込まれません。フードstd::endl

for(int i=0;i<9;i++) 
{ 
    // Flushes and adds a newline 
    cout<< "||" << endl; 
    sleep(1); 
} 

改行文字を追加した後、コンソールに出力を強制的にstd::flushを使用しています。 std::flushを直接使用して同じ効果を得ることができます。

+3

おそらく、endlが両方とも行末を追加してフラッシュを呼び出すという正確さが必要です。 '\ n'だけで十分です。 – Klaim

+1

*一般に、新しい行が印刷されるまで、出力は実際には書き込まれません**。* ..それは正しくありません。改行はその保証を与えません。 'std :: endl'はバッファ**に改行を追加し、**はそれをフラッシュします。 – Nawaz

+1

std :: endlの理由は、行末のもの(* nixでは\ n、Windowsでは\ r \ n)とstd :: flushを追加します。重要な部分はstd :: flushですが、std :: endlは確実に動作します。 –

13

出力をフラッシングしていません。

std::cout << "||" << std::flush; 
関連する問題