控制命令
我們常用的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
則是設置為高亮節加紅色。我們來看一看效果如何: