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
则是设置为高亮节加红色。我们来看一看效果如何:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗