std:: flush
|
Definido en el encabezado
<ostream>
|
||
|
template
<
class
CharT,
class
Traits
>
std:: basic_ostream < CharT, Traits > & flush ( std:: basic_ostream < CharT, Traits > & os ) ; |
||
Vacía la secuencia de salida os como si se llamara a os. flush ( ) .
Este es un manipulador de E/S de solo salida, puede ser llamado con una expresión como
out
<<
std
::
flush
para cualquier
out
de tipo
std::basic_ostream
.
Contenidos |
Notas
Este manipulador puede utilizarse para producir una línea de salida incompleta inmediatamente, por ejemplo, al mostrar la salida de un proceso de larga duración, registrar la actividad de múltiples hilos o registrar la actividad de un programa que puede fallar inesperadamente. Un vaciado explícito de std::cout también es necesario antes de una llamada a std::system , si el proceso generado realiza cualquier operación de E/S de pantalla (un ejemplo común es std:: system ( "pause" ) en Windows). En la mayoría de los otros escenarios interactivos de E/S habituales, std::endl es redundante cuando se usa con std::cout porque cualquier entrada desde std::cin , salida a std::cerr , o terminación del programa fuerza una llamada a std:: cout . flush ( ) .
Cuando una línea completa de salida necesita ser vaciada, puede utilizarse el std::endl manipulador.
Cuando cada operación de salida necesita ser liberada del búfer, se puede utilizar el manipulador std::unitbuf .
Parámetros
| os | - | referencia al flujo de salida |
Valor de retorno
os (referencia al flujo después de la manipulación).
Ejemplo
Sin
std::flush
, la salida sería la misma, pero podría no aparecer en tiempo real.
#include <chrono> #include <iostream> template<typename Diff> void log_progress(Diff d) { std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(d) << " ... " << std::flush; } int main() { volatile int sink = 0; auto t1 = std::chrono::high_resolution_clock::now(); for (int j = 0; j < 5; ++j) { for (int n = 0; n < 10000; ++n) for (int m = 0; m < 20000; ++m) sink += m * n; // do some work auto now = std::chrono::high_resolution_clock::now(); log_progress(now - t1); } std::cout << '\n'; }
Salida posible:
567ms ... 1137ms ... 1707ms ... 2269ms ... 2842ms ...
Véase también
|
controla si la salida se vacía después de cada operación
(función) |
|
|
envía
'
\n
'
y vacía el flujo de salida
(plantilla de función) |
|
|
sincroniza con el dispositivo de almacenamiento subyacente
(función miembro pública de
std::basic_ostream<CharT,Traits>
)
|