Espacios de nombres
Variantes
Acciones

std::flush

De cppreference.com
< cpp‎ | io‎ | manip
 
 
 
Manipuladores de E/S
Formateo de punto flotante
Formateo de enteros
Formateo de booleanos
Control de ancho de campo y relleno
Otro formateo
Procesamiento de espacio en blanco
Vaciado de salida
flush
(C++20)  

Manipulación de indicadores de estado
E/S de tiempo y dinero
(C++11)
(C++11)
(C++11)
(C++11)
Manipulación entre comillas
(C++14)
 
Definido en el archivo de 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 E/S de solo salida, que puede llamarse con una expresión como out << std::flush para cualquier out del tipo std::basic_ostream.

Contenido

[editar]Notas

Este manipulador puede usarse 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 varios hilos o registrar la actividad de un programa que puede fallar inesperadamente. También es necesario un vaciado explícito de std::cout antes de una llamada a std::system, si el proceso generado realiza cualquier E/S de pantalla (un ejemplo común es std::system("pause") en Windows). En la mayoría de los demás escenarios de E/S interactivos habituales, std::endl es redundante cuando se utiliza con std::cout porque cualquier entrada de std::cin, salida a std::cerr o finalización del programa fuerza una llamada a std::cout.flush().

Cuando se necesita vaciar una línea completa de salida, se puede utilizar el manipulador std::endl.

Cuando se necesita vaciar cada operación de salida, se puede utilizar el manipulador std::unitbuf.

[editar]Parámetros

os - Referencia al flujo de salida.

[editar]Valor de retorno

os (Referencia al flujo después de la manipulación).

[editar]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(){volatileint 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;// hacer algo de trabajoauto now =std::chrono::high_resolution_clock::now(); log_progress(now - t1);}std::cout<<'\n';}

Posible salida:

567ms ... 1137ms ... 1707ms ... 2269ms ... 2842ms ...

[editar]Véase también

Controla si la salida se vacía después de cada operación.
(función)[editar]
Emite '\n' y vacía el flujo de salida.
(plantilla de función)[editar]

(función miembro pública de std::basic_ostream<CharT,Traits>)[editar]
close