C、C++程序实现终端打印彩色文本 - 技术分享 - 志盟培训
首页技术分享 C、C++程序实现终端打印彩色文本

C、C++程序实现终端打印彩色文本

更新时间:2017-03-15      作者:陈老师       阅读:2319

(一)问题:

在Linux系统下写代码练习时,一般没有使用IDE编写代码的,都是使用终端vim编写,在终端运行查看结果。但是一般选择常规的输出效果,一方面时间长了感觉很乏味,另一方面在进行不同功能时没有明显的提示效果。

(二)解决思路:

在程序中通过代码来控制输出的文本颜色。

(三)核心内容介绍:

Linux 通过ANSI逸出序列(escape sequences)设置终端文本的显示属性,如文本的前景与背景颜色等,格式:

ESC[{parameters...}m

参数说明:

ESC:用于引导逸出序列,八进制、十进制与十六进制分别表示为033/27/0x1b,通常以反斜杠('')转义的形式\033,\x1b或\e表示;

{parameters...}:为指定的显示属性,通过数字表示,可以为单个属性,也可以为由分号(;)分隔的多个属性组成的列表,单个属性可以位于属性列表的任意位置;

m:表示显示属性的末尾

PS:ESC,左方括号([),显示属性与m之间都不包含空格;之后的内容则可以有空格。

(四) 属性说明:

显示属性:

01:bold,加粗

04:underscore,下划线

05:blink,闪烁

07:reverse,反显,即翻转前景色与背景色

08:hidden,隐藏

22:取消加粗

24:取消下划线

25:取消闪烁

27:取消反显

28:取消隐藏

00:reset,将所有属性与颜色重置为默认

文字颜色:

30:black,黑色

31:red,红色

32:green,绿色

33:brown,棕黄色

34:blue,蓝色

35:magenta,紫色

36:cyan,青色

37:white,白色

38:开启下划线,并设置默认前景颜色

39:关闭下划线,并设置默认前景颜色

背景颜色:

40:黑色

41:红色

42:绿色

43:棕黄色

44:蓝色

45:紫色

46:青色

47:白色

49:默认颜色

(五) 实际运用

实例1:直接控制文本格式、文字颜色、背景色。

cout << "\033[1m******高亮度******\033[0m" <<endl;

cout << "\033[4m******下划线******\033[0m" <<endl;

cout << "\033[5m******闪烁******\033[0m" <<endl;

cout << "\033[7m******反显******\033[0m" <<endl;

cout << "\033[30m*****033[30m****\033[0m" <<endl;

cout << "\033[31m*****033[31m****\033[0m" <<endl;

cout << "\033[32m*****033[32m****\033[0m" <<endl;

cout << "\033[33m*****033[33m****\033[0m" <<endl;

cout << "\033[34m*****033[34m****\033[0m" <<endl;

cout << "\033[35m*****033[35m****\033[0m" <<endl;

cout << "\033[36m*****033[36m****\033[0m" <<endl;

cout << "\033[37m*****033[37m****\033[0m" <<endl;

cout << "\033[38m*****033[38m****\033[0m" <<endl;

cout << "\033[1;34m*****033[1;34m*****\033[0m" <<endl;

cout << "\033[39;33m*****033[39;33m*****\033[0m" <<endl;

cout << "\033[40;33m*****033[40;33m*****\033[0m" <<endl;

cout << "\033[41;33m*****033[41;33m*****\033[0m" <<endl;

cout << "\033[42;33m*****033[42;33m*****\033[0m" <<endl;

cout << "\033[43;33m*****033[43;33m*****\033[0m" <<endl;

cout << "\033[44;33m*****033[44;33m*****\033[0m" <<endl;

cout << "\033[45;33m*****033[45;33m*****\033[0m" <<endl;

cout << "\033[46;33m*****033[46;33m*****\033[0m" <<endl;

cout << "\033[47;33m*****033[47;33m*****\033[0m" <<endl;

cout << "\033[48;33m*****033[48;33m*****\033[0m" <<endl;

cout << "\033[49;33m*****033[49;33m*****\033[0m" <<endl;

输出效果:

C、C++程序实现终端打印彩色文本

实例2:设计一个带颜色的进度条。

string str;

string temp = "|/-\\";

for(int i=0; i<100; ++i){

str += "#";

cout << "\033[?25lloading: %"<< i << " \033[46;33m"<< temp[i%4]<<str<< "\033[0m\r";

fflush(stdout);

usleep(1000*100);

}

cout << "\nDone!" <<endl;

输出效果:

 C、C++程序实现终端打印彩色文本

C、C++程序实现终端打印彩色文本

C、C++程序实现终端打印彩色文本

实例3:外卖系统部分:菜单显示。

cout << "\t\t\033[47;31m***外卖管理系统***\033[0m\t\t"<<endl;

cout << "\t\t\033[47;32m      1.登录      \033[0m\t\t"<<endl;

cout << "\t\t\033[47;34m      2.注册      \033[0m\t\t"<<endl;

cout << "\t\t\033[47;33m      3.退出      \033[0m\t\t"<<endl;

cout << "\n\n" <<endl;

cout << "\t\t\033[47;32m*****登录界面*****\033[0m\t\t"<<endl;

cout << "\t\t\033[47;32m      1.用户      \033[0m\t\t"<<endl;

cout << "\t\t\033[47;32m      2.商家      \033[0m\t\t"<<endl;

cout << "\t\t\033[47;32m      3.管理      \033[0m\t\t"<<endl;

cout << "\t\t\033[47;32m      4.返回      \033[0m\t\t"<<endl;

cout<< "\n\n" <<endl;

cout << "\t\t\033[47;34m*****注册界面*****\033[0m\t\t"<<endl;

cout << "\t\t\033[47;34m      1.用户      \033[0m\t\t"<<endl;

cout << "\t\t\033[47;34m      2.商家      \033[0m\t\t"<<endl;

cout << "\t\t\033[47;34m      3.管理      \033[0m\t\t"<<endl;

cout << "\t\t\033[47;34m      4.返回      \033[0m\t\t"<<endl;

输出效果:

C、C++程序实现终端打印彩色文本

在线报名

志盟科技上海招聘

在线报名 联系我们

志盟科技深圳招聘

在线报名 联系我们

志盟科技北京招聘

在线报名 联系我们
联系我们

咨询热线:

咨询 QQ:517578         

就业学员

  • 就业学员

    姓名:郭凡凡 
    院校:阜阳师范学院
    就职:佳戴
    职位:软件工程师
    月薪:10000

  • 就业学员

    姓名:陈祥龙 
    院校:中北大学
    就职:美囤妈妈
    职位:软件工程师
    月薪:9000

  • 就业学员

    姓名:陈建伟
    院校:南昌航空大学
    就职:SONY
    职位:嵌入式工程师
    月薪:8000

×
×
  • *真实姓名
  • *联系手机
  • *上课地址
  •    QQ号码

温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一报名服务。

×
  • *真实姓名
  • *联系手机
  • *联系邮箱
  • * QQ号码

温馨提示:请保持手机畅通,咨询老师将为您提供专属的一对一的服务。

本站由 宽敬科技——创新企业的建站运营顾问 提供支持