在代码量较大时,希望可以看见更直观的调试信息,那么把输出设置成不同颜色不失为一种优秀的做法~
printf 彩色输出需要用到控制命令:\033[A1;A2;A3m
控制命令以\033[
开头,以 m
结尾,而中间则是属性码,属性代码之间使用;
分隔,如\033[1;34;40m
。
A1;A2;A3
支持右侧省略原则,即只有两个参数时,默认为A1;A2
,只有一个参数时,默认为A1
。若只有一个参数时以m
结尾,则为A2
。
A1:属性;
A2:前景色;(字体颜色)
A3:背景色;(填充颜色)
属性代码(A1):
属性代码 | 功能 |
---|---|
0 | 重置所有属性 |
1 | 高亮/加粗 |
2 | 暗淡 |
4 | 下划线 |
5 | 闪烁 |
7 | 反转 |
8 | 隐藏 |
前景色(A2):
属性代码 | 功能 |
---|---|
30 | 黑色 |
31 | 红色 |
32 | 绿色 |
33 | 黄色 |
34 | 蓝色 |
35 | 品红 |
36 | 青色 |
背景色(A3):
属性代码 | 功能 |
---|---|
40 | 黑色 |
41 | 红色 |
42 | 绿色 |
43 | 黄色 |
44 | 蓝色 |
45 | 品红 |
46 | 青色 |
示例:
使用循环输出单一使用前景色(30-36)
和背景色(40-46)
的效果
#include <stdio.h>
int main(void)
{
int i;
for(i=30; i<=46; i++)
{
printf("%s%d \033[0m\033[%dm%s\033[0m\n", (i<40)? "A2: " : "A3: ", i, i, "HelloWorld");
}
return 0;
}
\033[0m
: 重置所有属性
编译运行,输出结果:
由于命令行为黑色,所以当前景色为黑色(30)
时无法看到黑色的HelloWorld
cout使用彩色输出的方法一样
#include <iostream>
using namespace std;
int main(void)
{
cout << "\033[0m3[31m" << "HelloWorld" << "\033[0m";
return 0;
}
\033[0m
: 重置所有属性
\033[31m
:设置前景色为红色(31)
编译运行,输出结果:
注意: 好的习惯是输出前后都将属性重置,因为控制命令相当于全局设置,一旦设置成功之后,只要不关闭,那么之后所有输出都为之前设置的属性方案,即使修改也是在之前设置基础上修改。
感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
暂无评论内容