千家信息网

解决ROS_INFO不能正确输出string的问题

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,今天就跟大家聊聊有关解决ROS_INFO不能正确输出string的问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、输出「??」项目调试一
千家信息网最后更新 2025年12月03日解决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安全错误 数据库的锁怎样保障安全 我的世界服务器端口号查看 唐山档案软件开发商 数据库管理员面试题和答案 怎么删除网络安全提醒 企业应该怎么样管理香港服务器呢 单位网络安全宣传纪录片 js上传附件到服务器 隔离点武汉网络安全学院 执法依据数据库意见建议 中国区特斯拉软件开发 山西精英网络技术服务计划表 创建数据库的命名命令是 文档导入数据库 许可服务器无法启动 芬芳互联网科技酱 和政县网络安全大队在哪里 移动宽带服务器无连接怎么办 21年数据库运维试题答案 如何设置数据库用户重复密码 新闻计算机网络技术好找工作吗 农业科技推广互联网应用研究 烟台富士康软件开发工程 完美root显示连接服务器出错 游戏服务器框架怎么写逻辑 也一样把台式电脑当服务器 内蒙古党员教育软件开发公司 请简述服务器的功能及其结构 软件开发阶段使用的工具 软件开发企业增值税税负率 静态网站数据库
0