搞一个连续进度条
- 循环打印递增#(第一次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(十进制) | 颜色 |
---|
40 | 30 | 黑 |
41 | 31 | 红 |
42 | 32 | 绿 |
43 | 33 | 黄 |
44 | 34 | 蓝 |
45 | 35 | 紫 |
46 | 36 | 青 |
47 | 37 | 灰白 |
- 为了酷炫一点,进度在40以下是红色,在80以下是黄色,80以上是绿色
旋转等待
- 设置了一个char round[4] ={’-’,’\’,’|’,’/’};然后每次打印不同的字符连续起来就会向钟表一样旋转起来啦
- 实现效果:
参考代码:
#include<iostream>
#include<stdio.h>
#include<unistd.h>
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(){
Solution().ColorProccesBar();
return 0;
}
yo~
yo~
如果觉得不错~
请别忘了点个赞~
Bro你的鼓励~
给我坚持的勇气~
Peace out~