significado - c++ force std:: cout flush(imprimir en pantalla)
std cin (2)
Tengo un código como el siguiente:
std::cout << "Beginning computations..."; // output 1
computations();
std::cout << " done!/n"; // output 2
El problema, sin embargo, es que a menudo la salida # 1 y la salida # 2 aparecen (virtualmente) simultáneamente. Es decir, a menudo la salida # 1 no se imprime en la pantalla hasta después de que devuelve computations()
. Dado que todo el propósito de la salida # 1 es indicar que algo está sucediendo en segundo plano (y, por lo tanto, fomentar la paciencia del usuario), este problema no es bueno.
¿Hay alguna forma de forzar que el búfer std::cout
se imprima antes de la llamada de computations()
? Alternativamente, ¿hay alguna otra forma (usando algo que no sea std::cout
) para imprimir en una salida estándar que solucione este problema?
Además de la respuesta de Joseph Mansfield, std::endl hace la descarga también (además de una nueva línea).
Inserta un carácter de final en la secuencia de salida os y lo vacía como si llamara a os.put (os.widen (''/ n'')) seguido de os.flush ().
Sólo inserte std::flush
:
std::cout << "Beginning computations..." << std::flush;
También tenga en cuenta que la inserción de std::endl
también se std::endl
después de escribir una nueva línea.