光标控制
使用\33
系列字符串完成光标控制,可参考关于linux特殊含义的转义符\033
具体例子如下:
cout << "\33[35m" << std::endl; //更改字体颜色为紫色
cout << "\33[32m" << std::endl; //更改字体颜色为绿色
cout << "\33[2J" << std::endl; //清屏
cout << "\33[0;0H" << std::endl; //光标回归原点
进度条
先写一个函数,用于绘制进度条
void showProgress(float progress, float bestScore)
{
const char *lable = "|/-\\";
static int index = 0;
index++;
if (progress > 1)
{
progress = 1;
}
int pa = progress * 100;
cout << "\33[35m" << std::endl; //更改字体颜色
cout << "Optimizing......" << std::endl;
cout << "BestScore=" << bestScore << std::endl;
cout << "\33[32m" << std::endl; //更改字体颜色
cout << "[" + std::string(pa, '=') + ">" + std::string(100 - pa, ' ') << "] " << progress * 100 << "% [" << lable[index % 4] << "]" << std::endl;
fflush(stdout); // 刷新缓冲区
}
然后将该函数放在代码正文中
cout << "\33[2J" << std::endl; //清屏
cout << "\33[0;0H" << std::endl; //光标回归原点
showProgress(progress, bestScore);//progress是一个0-1之间的数,用于表示百分比,bestScore是一个浮点数
运行效果如下