2012-05-11 15 views

Respuesta

7

Lo que es probable que estés viendo aquí es un efecto de la salida que se está amortiguada. En general, la salida no se escribirá hasta que se use std::endl.

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

Bajo el capó std::endl es la adición de un carácter de nueva línea y luego usando std::flush para forzar la salida de la consola. Puede utilizar std::flush directamente para obtener el mismo efecto

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

Quizás deba precisar que endl agrega un final de línea Y llama a color. Un '\ n' solo debería ser suficiente la mayor parte del tiempo. – Klaim

+1

* En general, la salida no se escribirá ** hasta que se imprima una nueva línea **. * ... Eso no es correcto. Una nueva línea no da esa garantía. Tenga en cuenta que 'std :: endl' agrega una nueva línea al buffer ** y ** luego lave. – Nawaz

+1

La razón por la que std :: endl funciona agrega las cosas del final de la línea (\ n para * nix, \ r \ n para Windows) y std :: flush. La parte clave es std :: flush, pero std :: endl ciertamente funciona. –

13

No estás lavado de su salida.

std::cout << "||" << std::flush; 
Cuestiones relacionadas