可能重复:
How to update a printed message in terminal without reprinting (Linux)
我有c ++代码,执行一些模拟。
我想显示模拟的百分比,但我不希望每一步输出一个新行,例如
1%
%2
3%
...
有没有办法在c ++或shell脚本中显示进度而不创建新行?
由于
任何人都知道如何更新我的个人网页上的数字而不刷新整个页面?
由于
double N=0;
forAll (internalIDs_, i) {
N++;
double percent = 100*N/internalIDs_.size();
// Info<< "\rProgress: " << percent << "%" << endl;
printf("\r[%6.4f%%]",percent);}
终端光标通过数字循环闪烁,非常烦人,如何摆脱这个?
答案 0 :(得分:23)
用于此目的的技巧是返回当前行中的第一个位置,而不是前进到下一行。
这是通过将\r
字符(回车)写入终端/标准输出来完成的。
答案 1 :(得分:15)
cout << "\r%1";
cout << "\r%2";
cout << "\r%3";
...
\ r \ n-在行首开始;
但! 如果:
cout << "\rsomelongmessage";
cout << "\rshort";
然后你出去了:
shortongmessage
因为:
somelongmessage
^^^^^
short
但你可以:
cout << "\rsomelongmessage";
cout << "\rshort ";
然后你终于得到了:
short