non stampa la stringa inserita nel ciclo. Il programma è stato scritto con l'aiuto di G ++, con file di intestazione sys/types.h inclusoPerché il mio output cout non appare immediatamente?
for(int i=0;i<9;i++)
{
cout<<"||";
sleep(1);
}
non stampa la stringa inserita nel ciclo. Il programma è stato scritto con l'aiuto di G ++, con file di intestazione sys/types.h inclusoPerché il mio output cout non appare immediatamente?
for(int i=0;i<9;i++)
{
cout<<"||";
sleep(1);
}
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);
}
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
* 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
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. –
Non stai vampate di calore l'output.
std::cout << "||" << std::flush;
prova 'Cout << "||" << endl; ' –
Puoi pubblicare l'errore? –