¿A qué velocidad son sus ciclos? Están en milisegundos o segundos. Si sus ciclos son cortos, es posible que solo desee actualizar la pantalla después de un segundo como elpasado.
Por ejemplo
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;
}
}
Esto sólo se actualizará la pantalla cada segundo y ahorrar el tiempo de escribir a la pantalla, ya que consume tiempo para volver a dibujar la pantalla (que se puede utilizar para el procesamiento). Además, si sus actualizaciones van tan rápido, esto le permite al usuario ver el porcentaje si sus ciclos son bastante cortos, ya que podría estar redibujando la pantalla todo el tiempo.
Nota: Actualizado en función de los comentarios.
Para una iluminación adicional, '\ r' genera un retorno de carro. –
Es posible que desee llamar a 'std :: cout.flush()' antes de 'Sleep() 'ya que' std :: cout' es una transmisión en búfer y, por lo tanto, es posible que su contenido no se muestre cuando lo desee. –
Como dice Dan, '\ r' es un retorno de carro, que no * borra * la línea, simplemente mueve el cursor al principio de la línea. –