C/C++——printf彩色输出
控制命令
我们常用的printf
函数输出来的颜色是终端的配色。如果想要输出不同的颜色进行区分,就需要用到printf
的控制命令:\033[m
。
控制命令以\033[
开头,以m
结尾,而中间则是属性码,属性代码之间使用;
分隔,如\033[1;34;42m
。而属性代码的含义见下面的表格。
printf属性代码
这里列举了三类属性代码,当然这只是一部分。
通用格式控制
属性代码 | 功能 |
---|---|
0 | 重置所有属性 |
1 | 高亮/加粗 |
2 | 暗淡 |
4 | 下划线 |
5 | 闪烁 |
7 | 反转 |
8 | 隐藏 |
前景色
属性代码 | 颜色 |
---|---|
30 | 黑色 |
31 | 红色 |
32 | 绿色 |
33 | 黄色 |
34 | 蓝色 |
35 | 品红 |
36 | 青色 |
背景色
属性代码 | 颜色 |
---|---|
40 | 黑色 |
41 | 红色 |
42 | 绿色 |
43 | 黄色 |
44 | 蓝色 |
45 | 品红 |
46 | 青色 |
举例
#include <cstdio>
void printf_red(const char *s)
{
printf("\033[0m\033[1;31m%s\033[0m", s);
}
void printf_green(const char *s)
{
printf("\033[0m\033[1;32m%s\033[0m", s);
}
void printf_yellow(const char *s)
{
printf("\033[0m\033[1;33m%s\033[0m", s);
}
void printf_blue(const char *s)
{
printf("\033[0m\033[1;34m%s\033[0m", s);
}
void printf_pink(const char *s)
{
printf("\033[0m\033[1;35m%s\033[0m", s);
}
void printf_cyan(const char *s)
{
printf("\033[0m\033[1;36m%s\033[0m", s);
}
int main()
{
printf_red("Hello World.\n");
printf_green("Hello World.\n");
printf_yellow("Hello World.\n");
printf_blue("Hello World.\n");
printf_pink("Hello World.\n");
printf_cyan("Hello World.\n");
return 0;
}
上面的代码中,每个函数都对应输出一种颜色的字符串,这里只用了高亮加前景色,没有设置背景色。我们看到printf
中的字符串开头和结尾均是\033[0m
,这个代码的作用就是重置所有设置过的属性,在开头添加是为了防止其他的设置对自身有影响,而在结尾添加则是为了防止自身对其他地方的设置有影响。
然后中间的代码如\033[1;31m%s
则是设置为高亮节加红色。我们来看一看效果如何: