2009-09-04 5 views
11

Comment pouvez-vous obtenir une sortie sans tampon de cout, de sorte qu'il écrit instantanément sur la console sans avoir besoin de vider (similaire à cerr)?Sortie sans tampon avec cout

Je pensais que cela pourrait être fait via rdbuf() -> pubsetbuf, mais cela ne semble pas fonctionner. L'extrait de code suivant ci-dessous est censé être immédiatement affiché sur la console, puis attendre quelques secondes. Mais à la place, il attend juste, et ne sort que lorsque le programme se termine et que le tampon est vidé.

#include <iostream> 

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

Répondre

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

devrait faire l'affaire.

+0

Cette solution a bien fonctionné pour moi, merci! Une note pour les autres: la mise en mémoire tampon semble se produire lors de l'utilisation de cout ou printf et se produit même si un retour à la ligne est utilisé à la fin de la ligne. – Moot

Questions connexes