克里昂的回程

时间:2017-10-26 00:47:12

标签: c++ console output special-characters 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%

我已阅读this帖子,我尝试禁用putty,但它没有帮助。这个问题与打印之间的时间有关,当我删除睡眠线时一切正常。

2 个答案:

答案 0 :(得分:1)

我偶然发现,如果您打印双\ \中间有一些文字,那么它就会开始工作。

printf("\rAny text here\r%7.2f%%", last_progress * 100);

答案 1 :(得分:-2)

您在printf参数的末尾缺少\n