解决ROS_INFO不能正确输出string的问题
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,今天就跟大家聊聊有关解决ROS_INFO不能正确输出string的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、输出「??」项目调试一
千家信息网最后更新 2024年11月17日解决ROS_INFO不能正确输出string的问题
今天就跟大家聊聊有关解决ROS_INFO不能正确输出string的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一、输出「??」
项目调试一个节点,打印 ROS 信息时发现设置的节点名称都是问号:
ROS_INFO("[%s]: camera_extrinsic_mat", kNodeName);
看了下代码发现是自己把节点名称设置为 const,但是没有正确初始化 const
变量,导致输出了「??」,C++ 语法都忘记了,太菜了,以下是第一种初始化 const 的方法:
// 1. 先在类中定义
private:
const std::string kNodeName;
// 2. 构造函数初始化列表后初始化
ClassName(): kNodeName("node_name")
第二种方法是加上 static 关键字:
// 1. 在类中定义静态 const 变量
private:
static const std::string kNodeName;
// 2. 在类外进行 const 初始化
const std::string ClassName::kNodeName = "node_name";
我用的第二种方式,因为这样的 const 看起来比较直观,在构造函数初始化列表中赋值不容易被看到,以下是我修改后的代码:
// 1. lidar_camera_fusion.h
private:
static const std::string kNodeName;
// 2. lidar_camera_fusion.cpp
const std::string LidarCameraFusion::kNodeName = "lidar_camera_fusion";
// 3. ROS_INFO
ROS_INFO("[%s]: camera_extrinsic_mat", kNodeName);
总结下 const 变量在类中的用法:
构造函数参数初始化列表中初始化 const 变量 将 const 变量声明为 static 类型,然后在类的外部初始化
二、输出乱码
正确初始化 const 变量后,发现 INFO 又输出乱码:
找了下资料发现是因为 ROS_INFO
不能直接输出 std::string
,需要转成 c_str
:
// 3. ROS_INFO
ROS_INFO("[%s]: camera_extrinsic_mat", kNodeName.c_str());
第二个乱码的原因是因为把 %s
错写成大写的 %S
了,改回来即可:
// 3. 错写成大写的 %S 了
ROS_INFO("[%S]: camera_extrinsic_mat", kNodeName.c_str());
看完上述内容,你们对解决ROS_INFO不能正确输出string的问题有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
输出
变量
乱码
内容
函数
节点
问题
代码
名称
大写
方法
直观
信息
关键
关键字
原因
参数
方式
更多
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怎样修改数据库数据
计算机网络技术技术中外合作
儿童网络安全教育宣传
服务器更换阵列卡数据会丢失
网络安全反制思路
把word导入数据库中
网络安全行业成长规模
网络安全论坛郑州
新闻社区 数据库 例子
南京鼓楼区网络安全大队电话
进入服务器管理界面快捷方式
德州漳卫南网络安全
网易服务器安装不了暮色森林
数据库的odbc数据源是几位的
数据库怎么添加命令按钮下一项
浦东新区工程软件开发调试
网络安全设备申请
计算机网络技术属于理工
专家谈网络安全形势
软件开发有饱和吗
合肥棋牌手游软件开发
学软件开发的中专学校学费多少
半圆网络技术南京
制作动画视频软件开发
数据库default 值
软件开发规范8566
数据库软件open
网络安全小视频如何拍
2021奥鹏网络技术与应用
上汽通用大数据库中心