2009-09-04 24 views
11

¿Cómo se puede obtener salida sin búfer de cout, para que se escriba instantáneamente en la consola sin la necesidad de enjuagar (similar a cerr)?Salida sin búfer con cout

Pensé que podría hacerse a través de rdbuf() -> pubsetbuf, pero esto no parece funcionar. Se supone que el siguiente fragmento de código a continuación se envía inmediatamente a la consola y luego espera unos segundos. Pero, en cambio, solo espera, y solo se emite cuando el programa sale y se vacía el búfer.

#include <iostream> 

int main() 
{ 
     std::cout.rdbuf()->pubsetbuf(0, 0); 
     std::cout << "A"; 
     sleep(5); 
} 

Respuesta

32
std::cout.setf(std::ios::unitbuf); 

debe hacer el truco.

+0

Esta solución de hecho funcionó para mí, ¡gracias! Una nota para los demás: el almacenamiento en búfer parece ocurrir cuando se usa cout o printf y ocurre incluso si se usa una nueva línea al final de la línea. – Moot

Cuestiones relacionadas