Как быстро ваши циклы? Являются ли они в миллисекундах или секундах. Если ваши циклы коротки, вам может потребоваться обновить экран только через секунду.
Например
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;
}
}
Это будет обновлять только на экране каждую секунду и сэкономить время записи на экране, как он потребляет время перерисовки экрана (который вы можете использовать для обработки). Кроме того, если ваши обновления идут так быстро, это позволяет пользователю увидеть процент, если ваши циклы довольно короткие, так как вы могли постоянно перерисовывать экран.
Примечание: Обновлено на основе комментариев.
Для дополнительного освещения '\ r' выводит возврат каретки. –
Возможно, вы захотите вызвать 'std :: cout.flush()' перед 'Sleep()', поскольку 'std :: cout' является буферизованным потоком и, следовательно, его содержимое может не отображаться, когда вы ожидаете. –
Как говорит Дэн, '\ r' - это возврат каретки, который не * очищает * линию, он просто перемещает курсор обратно в начало строки. –