Linux:彩色进度条

搞一个连续进度条

  • 循环打印递增#(第一次1个,第二次2个…)作为进度条的元素,但注意每次打印完后以/r结尾,这样会覆盖该行的文本从开头重新打印,然后用 fflush(stdout); 手动清理缓冲区让它显示出来,如果你用了/n的话,虽然不需要手动清理缓冲区了,但你看到的可就是个直角三角形了=_=

打印彩色效果

  • printf支持改变打印内容的颜色,和其背景颜色,其格式为:printf("\033[%d;%d;%dm内容\033[0m",a,b,c);
  • a的参数:
十进制 功能
0 默认
1 加粗
4 下划线
7 反显
8 隐形(可以选中,看不见)
  • b用于设置背景色,c用于设置内容颜色
b(十进制) c(十进制) 颜色
40 30
41 31
42 32 绿
43 33
44 34
45 35
46 36
47 37 灰白
  • 为了酷炫一点,进度在40以下是红色,在80以下是黄色,80以上是绿色

旋转等待

  • 设置了一个char round[4] ={’-’,’\’,’|’,’/’};然后每次打印不同的字符连续起来就会向钟表一样旋转起来啦
  • 实现效果:
    在这里插入图片描述
    在这里插入图片描述
    参考代码:
#include
#include
#include
using namespace std;

class Solution{
  public: 
    void ColorProccesBar(size_t size = 100){
      char round[4] ={'-','\\','|','/'}; 
      for(size_t i = 0;i<=size;++i){
          printf("%c[%%%d]",round[i%4],i);
        for(size_t j = 0;j<i;++j){
          if(i<=40)
          printf("\033[47;31m#\033[0m");
          else if(i>40&&i<=80)
          printf("\033[47;33m#\033[0m");
          else
          printf("\033[47;32m#\033[0m");
        }
        fflush(stdout);
        usleep(200000);
        printf("\r");
      }
      printf("\n");
  }
};

int main(){
  //int size = 0;
  //cin>>size;
  Solution().ColorProccesBar();
  return 0;
}

yo~
yo~
如果觉得不错~
请别忘了点个赞~
Bro你的鼓励~
给我坚持的勇气~
Peace out~

你可能感兴趣的:(Linux)