Comment sont rapides vos cycles? Sont-ils dans la milliseconde, ou secondes. Si vos cycles sont courts, vous voudrez peut-être seulement mettre à jour l'écran après une seconde.
Par exemple
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;
}
}
Cela ne met à jour l'écran chaque seconde et enregistrer le temps à écrire à l'écran comme il consomme le temps de redessiner l'écran (que vous pouvez utiliser pour le traitement). En outre, si vos mises à jour vont si vite, cela permet à l'utilisateur de voir le pourcentage si vos cycles sont assez courts, car vous pourriez redessiner l'écran tout le temps.
Note: Mis à jour en fonction des commentaires.
Pour un éclairage supplémentaire, '\ r' produit un retour chariot. –
Vous pouvez appeler 'std :: cout.flush()' avant 'Sleep()' car 'std :: cout' est un flux bufferisé et donc son contenu risque de ne pas s'afficher quand vous le souhaitez. –
Comme le dit Dan, '\ r' est un retour chariot, qui ne * supprime * pas la ligne, il ramène simplement le curseur au début de la ligne. –