【C++】终端颜色输出及ROS终端颜色输出控制

  1. printf("\033[ 颜色特效控制
  2. ROS中的日志log消息与ROS终端的不同颜色输出

C++终端颜色输出:

<pre name="code" class="cpp">颜色特效控制:  
  
printf("\033[1;33m Hello World. \033[0m \n");  


颜色如下:  
none         = "\033[0m"  
black        = "\033[0;30m"  
dark_gray    = "\033[1;30m"  
blue         = "\033[0;34m"  
light_blue   = "\033[1;34m"  
green        = "\033[0;32m"  
light_green -= "\033[1;32m"  
cyan         = "\033[0;36m"  
light_cyan   = "\033[1;36m"  
red          = "\033[0;31m"  
light_red    = "\033[1;31m"  
purple       = "\033[0;35m"  
light_purple = "\033[1;35m"  
brown        = "\033[0;33m"  
yellow       = "\033[1;33m"  
light_gray   = "\033[0;37m"  
white        = "\033[1;37m"  
 
  
字背景颜色范围: 40--49                   字颜色: 30--39  
          	40:30:41:31:42:绿                          32: 绿  
	        43:33:44:34:45:35:46:深绿                        36: 深绿  
	        47:白色                        37: 白色  


输出特效格式控制:   
\033[0m  关闭所有属性    
\033[1m   设置高亮度    
\03[4m   下划线    
\033[5m   闪烁    
\033[7m   反显    
\033[8m   消隐    
\033[30m   --   \033[37m   设置前景色    
\033[40m   --   \033[47m   设置背景色     
  
  
光标位置等的格式控制:    
\033[nA  光标上移n行    
\03[nB   光标下移n行    
\033[nC   光标右移n行    
\033[nD   光标左移n行    
\033[y;xH设置光标位置    
\033[2J   清屏    
\033[K   清除从光标到行尾的内容    
\033[s   保存光标位置    
\033[u   恢复光标位置    
\033[?25l   隐藏光标    
\33[?25h   显示光标

ROS终端颜色输出

C++中的cout和printf能够向终端打印不同颜色的字体,同样的,ROS的消息输出机制也可以输出彩色信息。下面我们以ROS_INFO_STREAM为例,说明怎么向终端输出不一样的彩色文本。

#include <ros/ros.h>
#include <ros/console.h>

int main(int argc, char **argv)
{
  ros::init(argc, argv, "rosdebug");

  ROS_INFO_STREAM("\033[30m 黑色字 \033[0m");
  ROS_INFO_STREAM("\033[31m 红色字 \033[0m");
  ROS_INFO_STREAM("\033[32m 绿色字 \033[0m");
  ROS_INFO_STREAM("\033[33m 黄色字 \033[0m");
  ROS_INFO_STREAM("\033[34m 蓝色字 \033[0m");
  ROS_INFO_STREAM("\033[36m 天蓝字 \033[0m");
  ROS_INFO_STREAM("\033[37m 白色字 \033[0m");
  ROS_INFO_STREAM("\033[40;37m 黑底白字 \033[0m");
  ROS_INFO_STREAM("\033[41;37m 红底白字 \033[0m");
  ROS_INFO_STREAM("\033[42;37m 绿底白字 \033[0m");
  ROS_INFO_STREAM("\033[47;30m 白底黑字 \033[0m");
  ROS_INFO_STREAM("\033[43;37m 黄底白字 \033[0m");
  ROS_INFO_STREAM("\033[44;37m 蓝底白字 \033[0m");
  ROS_INFO_STREAM("\033[45;37m 紫底白字 \033[0m");
  ROS_INFO_STREAM("\033[46;37m 天蓝底白字 \033[0m");

  return 1;
}

会输出相应颜色的字体和背景,如下输出所示:
在这里插入图片描述
如果你的输出字体显示为问号,可以在打印方法之前,加入下面任意一行代码:

  setlocale(LC_ALL, "");
  // 或
  setlocale(LC_CTYPE, "zh_CN.utf8");
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值