printf 和 cout 彩色输出

在代码量较大时,希望可以看见更直观的调试信息,那么把输出设置成不同颜色不失为一种优秀的做法~

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)的效果

d7198017ef215916

#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 : 重置所有属性

 

编译运行,输出结果:

F7f7e08ccf214106

由于命令行为黑色,所以当前景色为黑色(30)时无法看到黑色的HelloWorld

cout使用彩色输出的方法一样

d50197782d215526

#include <iostream>
using namespace std;

int main(void)
{
    cout << "\033[0m\033[31m" << "HelloWorld" << "\033[0m";
    return 0;
}

\033[0m : 重置所有属性

\033[31m设置前景色为红色(31)

编译运行,输出结果:

23a3e3b65e215546

注意 好的习惯是输出前后都将属性重置,因为控制命令相当于全局设置,一旦设置成功之后,只要不关闭,那么之后所有输出都为之前设置的属性方案,即使修改也是在之前设置基础上修改。

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞8打赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容