2012-05-11 11 views

risposta

7

Quello che state vedendo qui probabilmente è un effetto dell'uscita di essere tamponato. In generale, l'output non verrà effettivamente scritto fino a quando non viene utilizzato lo std::endl.

for(int i=0;i<9;i++) 
{ 
    // Flushes and adds a newline 
    cout<< "||" << endl; 
    sleep(1); 
} 

Sotto il cofano std::endl è l'aggiunta di un carattere di nuova riga e quindi utilizzando std::flush per forzare l'output alla console. È possibile utilizzare std::flush direttamente per ottenere lo stesso effetto

for(int i=0;i<9;i++) 
{ 
    cout << "||" << flush; 
    sleep(1); 
} 
+3

Forse dovresti precisare che endl entrambi aggiungono una fine linea E chiamano flush. Un '\ n' solo dovrebbe essere sufficiente la maggior parte del tempo. – Klaim

+1

* In generale, l'output non verrà effettivamente scritto ** finché non viene stampata una nuova riga **. * .. Non è corretto. Una newline non dà questa garanzia. Nota che 'std :: endl' aggiunge una nuova riga al buffer ** e ** e poi lo scarica. – Nawaz

+1

La ragione per cui std :: endl funziona aggiunge le cose di fine riga (\ n per * nix, \ r \ n per Windows) e uno std :: flush. La parte chiave è std :: flush, ma std :: endl funziona sicuramente. –

13

Non stai vampate di calore l'output.

std::cout << "||" << std::flush; 
Problemi correlati