std::cout、printf 和 RCLCPP_INFO的对比

20 篇文章 5 订阅

1、std::cout

C++<iostream>自带,不用标明数据的类型,可以直接输出,不过只能输出几种基本格式的数据。

2、printf

C++自带。
typedef 重新定义数据格式后,std::cout是不能正常输出显示的,必须用printf()才能输出uint8_t类型的数据值,需要标明数据的类型。

printf()函数的调用格式为:

printf("<格式化字符串>", <参量表>);
// 1、整形
%d  有符号十进制整形
%ld 十进制长整形
%3d 位数为3,不足则在左边补空格

%u  无符号十进制整形
%lu 无符号十进制长整形

%x  无符号十六进制整形,如0x12
%lx 位数为4,不足则在左边补0,常用,如0x0012

// 2、实型
%f  float型
%lf double型
    
m.n m指域宽,即所占的总的位数,包含小数点;n指精度,即小数的位数
%f  不指定宽度,整数部分全部输出,并输出6位小数

// 3、字符
%c  字符

// 4、字符串
%s  字符串

// 5、指针
%p  指针

​ 比如:

int val = 86;
printf("val= %d, 字符= %c",val,val);
//val= 86, 字符= V

3、RCLCPP_INFO

ROS2自带的log输出,分等级,带颜色,输出格式与printf相同,需要标明数据的类型。

RCLCPP_INFO(get_logger(),"val:%d",val);

4、异同点

4.1 各自优点
  • std::cout简单,不要标明数据类型,直接输出;
  • printf输出数据类型多,可以输出typedef重定义后的类型;
  • RCLCPP_INFO分等级,比如RCLCPP_ERROR会在终端上显示红色,便于对不同的错误等级log分类,且会显示绝对时间以及ros node的名称;
4.2 选择
  • std::cout和printf可以用linux的重定向>将终端显示输出到指定文件中,而RCLCPP_INFO无法重定向;
  • std::cout使用方便,不用指明数据的类型;
  • print和RCLCPP_INFO需要指明数据类型,一旦数据类型指明错误,则无法输出log显示。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值