[英]Carriage return in CLion
这是一个简单的程序,旨在跟踪循环进度并在某些阶段进行打印(此示例中为每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%
我已经阅读了此主题,并尝试禁用腻子,但没有帮助。 这个问题与两次打印之间的时间有关,因为当我删除睡眠线时,一切正常。
我不小心发现,如果您在双\\ r之间打印一些文字,则它开始工作。
printf("\rAny text here\r%7.2f%%", last_progress * 100);
您在printf参数末尾缺少\\n
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.