Quanto velocemente sono i cicli? Sono nel millisecondo o secondi. Se i cicli sono brevi, si consiglia di aggiornare lo schermo dopo un secondo in modalità elpata.
Per esempio
include <time.h> /* if memory serves me correctly */
int currentTime = time(0);
for (int i = 0; i < 100; i++)
{
/* do work here and save the percentage completed */
lastTime = time(0);
if ((lastTime-currentTime) >= 1)
{
/* output percentage completed (using AraK information) */
currentTime = lastTime;
}
}
Questo sarà solo aggiornare lo schermo ogni secondo e salvare il tempo a scrivere sullo schermo come si consuma il tempo per ridisegnare lo schermo (che è possibile utilizzare per l'elaborazione). Inoltre, se i tuoi aggiornamenti vanno così veloci, questo ti permette di vedere la percentuale se i tuoi cicli sono piuttosto brevi, dato che potresti ridisegnare lo schermo tutto il tempo.
Nota: aggiornato in base ai commenti.
Per ulteriore illuminazione, '\ r' restituisce un ritorno a capo. –
Si potrebbe voler chiamare 'std :: cout.flush()' prima di 'Sleep()' dato che 'std :: cout' è un flusso bufferizzato e quindi il contenuto potrebbe non essere visualizzato quando previsto. –
Come dice Dan, '\ r' è un ritorno a capo, che non * cancella * la riga, sposta semplicemente il cursore indietro all'inizio della riga. –