c++ - 如何在保持 UNIX 格式的同时将“ros::Time”转换为字符串?
问题描述
上下文:
我有以 UNIX 时间戳作为名称的图像文件,例如1341846314.694004.png
. 这些名称对应于header.stamp
发布图像的 ROS .bag 文件的消息。我使用 Python 为每个图像生成了边界框文件,并使用相同的模式来命名它们,例如1341846314.694004_bb.txt
.
问题:
我无法将UNIX 时间header.stamp
类型ros::Time
和格式的 转换为 C++ 中的字符串。
到目前为止,我阅读的每个资源都告诉我要么使用header.stamp.toSec()
(这无济于事,因为相关信息正在丢失),要么将其转换为其他时间格式,然后我可以将其转换为字符串(这又不是他,因为我需要 UNIX 格式)。
解决方案
时间类在Python和C++中提供 secs 和 nsecs 字段。所以你可以使用它们并将它们组合成一个字符串:
Python:
stamp = rospy.Time.now()
print(str(stamp.secs) + '.' + str(stamp.nsecs))
C++:
ros::Time stamp = ros::Time::now();
std::stringstream ss;
ss << stamp.sec << "." << stamp.nsec;
std::cout << ss.str() << std::endl;
两种实现的输出如下:
1612707880.149451971
推荐阅读
- wso2 - WSO2 ESB - 如何调用带有呼叫阻塞的迭代调解器?
- meshlab - 如何使用meshlab中的APSS功能进行去噪?
- neo4j - jQAssistant:无法重置外部 Neo4J 存储 - 为什么?
- python - pandas dataFrame 的替换给出了 NaN 值
- javascript - JS - 初学者 - 函数 isMaleName()
- android - 剃须刀付款给未找到适当的付款方式错误
- laravel - 获取 app/Http/Kernel.php 的权限被拒绝错误
- javascript - 没有可调整大小的边框和 JQuery 的 Javascript 图像裁剪
- javascript - 用 JS replace() 替换 'src=#' 属性不起作用
- javascript - 在 jquery 中选择第一个孩子时出现问题(需要优化代码)