c++ - 将 argv 参数转换为双精度
问题描述
我在 Ros 中创建了一个 .srv 文件。其结构如下。
float64 a
float64 a
---
bool response
现在我尝试读取argv
as中的字符float
。无论我通过哪些值,我的输出总是相同的。输出:
check Numbers
a: 94290532670520
b: 0
我的错误在哪里?提前致谢。
int main(int argc, char **argv)
{
rclcpp::init(argc, argv);
if (argc != 3) {
RCLCPP_INFO(rclcpp::get_logger("rclcpp"), "usage: add_two_ints_client theta x");
return 1;
}
std::shared_ptr<rclcpp::Node> node = rclcpp::Node::make_shared("add_two_ints_client");
rclcpp::Client<robot_control::srv::RobotControl>::SharedPtr client =
node->create_client<robot_control::srv::RobotControl>("add_two_ints");
auto request = std::make_shared<robot_control::srv::RobotControl::Request>();
request->theta = std::atof(argv[0]);
request->x = std::atof(argv[1]);
// request->theta = std::atoll(argv[1]);
// request->x = std::atoll(argv[2]);
RCLCPP_INFO(rclcpp::get_logger("rclcpp"), "check Numbers\na: %ld" " b: %ld",
request->theta, request->x);
解决方案
argv[0]
是程序名称;你可能的意思是argv[1]
和argv[2]
。- 您的日志输出错误;
%ld
表示long int
, 不float
或double
. 试试%f
。
推荐阅读
- amazon-web-services - 如何在胶水 pyspark 脚本中自动保存 s3 存储桶名称?
- arrays - 在数组中排序数组
- javascript - 手动销毁未解决的承诺
- java - 为什么我的 xml 中的 textinputlayout 不显示?
- angular - 角材料步进器“分页”
- python-3.x - 如何在多级子目录中查找文件
- r - R 在从 matriggr 管道中的矩阵创建数据帧时给出列名
- c# - 如何在 WPF 的列表框中显示我的列表日期
- aws-ebs - 跨 AWS 区域的 EBS Snapshot 副本
- r - 使函数返回多边形上的位置以获得多边形之间的最短距离