2017-05-25 1 views
0

Je vous attendriez à afficher « bonjour » et 2sec (retard) plus tard « monde »affichage Cout sur la même ligne avec un retard de temps (comportement étrange)

int t = time(NULL); 
    std::cout << "hello "; 

    while(time(NULL) < (t + 2)); 
    std::cout << " world"; 

mais je reçois un écran vide jusqu'après 2sec, affichage du programme "Bonjour tout le monde". même si l'intervalle de temps augmente comme (t + 9) même résultat. Je ne suis pas farmiler avec ce comportement cout.

Mais si j'ajoute std::endl au 1er Cout

std::cout << "hello" << std::endl; 
... 

i obtenir le résultat attendu ("bonjour" et après (2sec) timedelay "monde").

+0

double possible de (https://stackoverflow.com/questions/14858262/stdcout-wont-print) [std :: Cout ne sera pas imprimer] –

Répondre

1

std::cout est généralement tamponnés, ce qui signifie qu'il ne peut émettre immédiatement, à moins que vous forcer à. Essayez std::flush après votre première sortie:

std::cout << "hello " << std::flush;