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");