no imprime la cadena puesta en el bucle. El programa fue escrito con la ayuda de G ++, con el archivo de cabecera sys/types.h incluido¿Por qué mi salida de cout no aparece inmediatamente?
for(int i=0;i<9;i++)
{
cout<<"||";
sleep(1);
}
no imprime la cadena puesta en el bucle. El programa fue escrito con la ayuda de G ++, con el archivo de cabecera sys/types.h incluido¿Por qué mi salida de cout no aparece inmediatamente?
for(int i=0;i<9;i++)
{
cout<<"||";
sleep(1);
}
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);
}
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
* 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
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. –
No estás lavado de su salida.
std::cout << "||" << std::flush;
try 'cout <<" || " << endl; ' –
¿Puedes publicar el error? –