繁体   English   中英

CLion中的回车

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM