2012-05-11 12 views
9

wird die in die Schleife eingegebene Zeichenfolge nicht gedruckt. Das Programm wurde mit Hilfe von G ++ geschrieben, mit sys/types.h Header-Datei enthaltenWarum erscheint meine Cout-Ausgabe nicht sofort?

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

versuchen Sie 'cout <<" || " << endl; ' –

+0

Können Sie den Fehler posten? –

Antwort

7

Was sind Sie wahrscheinlich hier sehen, ist ein Effekt der Ausgabe gepuffert werden. Im Allgemeinen wird die Ausgabe nicht geschrieben, bis std::endl verwendet wird.

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

Unter der Haube std::endl wird ein Zeilenende-Zeichen hinzufügen und dann std::flush die Ausgabe an die Konsole zu zwingen, verwendet wird. Sie können direkt

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

Vielleicht sollten Sie präzisieren, dass beide ein Ende der Zeile hinzufügen und einen Flush aufrufen. Ein '\ n' allein sollte die meiste Zeit ausreichen. – Klaim

+1

* Im Allgemeinen wird die Ausgabe nicht geschrieben ** bis eine neue Zeile gedruckt wird **. * .. Das ist nicht korrekt. Ein Newline gibt diese Garantie nicht. Beachten Sie, dass 'std :: endl' dem Puffer ** und ** eine neue Zeile hinzufügt und dann löscht. – Nawaz

+1

Der Grund, warum std :: endl funktioniert, fügt das End-of-Line-Zeug (\ n für * nix, \ r \ n für Windows) und ein std :: flush hinzu. Der Schlüsselteil ist std :: flush, aber std :: endl funktioniert sicherlich. –

13

Sie den gleichen Effekt zu erhalten verwenden std::flush sind Ihre Ausgabe nicht Spülung.

std::cout << "||" << std::flush; 
Verwandte Themen