Вот простая программа, предназначенная для отслеживания хода выполнения цикла и его вывода на определенных этапах (каждые 10% в этом примере).
using namespace std;
int main() {
double step = 0.1;
double last_progress = 0;
int num_iter = 100;
for (int i = 1; i <= num_iter; ++i) {
double k = i * 1.0 / num_iter;
if (k > last_progress + step) {
last_progress += step;
printf("\r%7.2f%%", last_progress * 100);
fflush(stdout);
this_thread::sleep_for(chrono::milliseconds(10));
}
}
return 0;
}
Я ожидаю, что на выходе будет одна переопределяемая строка, показывающая текущий прогресс. Если я запускаю эту программу в консоли, все работает как положено. Однако, когда я пытаюсь выполнить его в CLion (2017.1.1), я получаю следующий вывод:
10.00% 20.00% 30.00% 40.00% 50.00% 60.00% 70.00% 80.00% 90.00% 100.00%
Я прочитал эту тему и попытался отключить замазку, но это не помогло. Эта проблема как-то связана со временем между отпечатками, когда я удаляю линию сна, все работает нормально.