这是一个简单的程序,旨在跟踪循环进度并在某些阶段打印(在本例中每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%
我已阅读this帖子,我尝试禁用putty,但它没有帮助。这个问题与打印之间的时间有关,当我删除睡眠线时一切正常。
答案 0 :(得分:1)
我偶然发现,如果您打印双\ \中间有一些文字,那么它就会开始工作。
printf("\rAny text here\r%7.2f%%", last_progress * 100);
答案 1 :(得分:-2)
您在printf参数的末尾缺少\n