Dan*_*iel 8 c++ shell terminal cursor
我使用以下行在我的c ++程序中输出我的模拟进度信息,
double N=0;
double percent=0;
double total = 1000000;
for (int i; i<total; ++i)
{
percent = 100*i/total;
printf("\r[%6.4f%%]",percent);
}
Run Code Online (Sandbox Code Playgroud)
它工作正常!
但问题是我看到终端光标通过数字不断循环闪烁,这很烦人,有谁知道怎么摆脱这个?
我见过像wget或ubuntu apt这样的程序,它们也使用进度条或百分比,但它们似乎没有闪烁的光标问题,我想知道他们是怎么做到的?
谢谢!
Leo*_*erd 18
您可以使用DECTCEM(DEC文本光标启用模式)模式隐藏和显示光标,DECSM并且DECRM:
fputs("\e[?25l", stdout); /* hide the cursor */
fputs("\e[?25h", stdout); /* show the cursor */
Run Code Online (Sandbox Code Playgroud)
kol*_*kol 12
只是猜测:尝试使用适当数量的'\ b'(退格)字符而不是'\ r'.
==编辑==
我不是Linux shell向导,但这可能有效:
system("setterm -cursor off");
// ...display percentages...
system("setterm -cursor on");
Run Code Online (Sandbox Code Playgroud)
别忘了#include <cstdlib>或<iostream>.
| 归档时间: |
|
| 查看次数: |
11713 次 |
| 最近记录: |