将字符串/字符转换为double,然后使用double进行计算
Convert string/char to double and following calculation with the double
我有一个由指针指向的字符串,我想将该字符串转换为双类型数字进行计算。但是,我不确定我的字符串是string
还是char*
,也不确定我是否正确访问了指针指向的字符串。以下是我的代码:
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard: [%s]", msg->data.c_str());
std::string str = msg->data;
ROS_INFO("I heard: [%s]", str.c_str());
double fmsg = std::atof(str.c_str());
ROS_INFO("I am making calculation: [%d]", fmsg+1.0);
}
double
类型无法识别,因此fmsg+1.0
会产生十位数左右的数字。有人能帮忙吗?
首先,由于您使用的是c_str
,因此字符串的类型不能为char*
;最有可能是CCD_ 7。
此外,您不需要创建字符串的副本:std::string str = msg->data
是多余的(即使它没有坏处)。
至于你得到的糟糕输出——Shashwat Kumar指出,即使数字本身是正确的,你的代码也没有正确打印数字。如果ROS_INFO
的语法与printf
相同,请使用%lf
或%f
格式说明符打印类型为double
:的数字
ROS_INFO("I am making calculation: [%f]", fmsg + 1);
(此外,无需将1
拼写为1.0
;如果您认为1.0
更好,您可能更喜欢它)
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- C++在数学计算中将double转换为int
- C++:快速/并行计算两个"std::vector<double>"向量之间的L1距离
- 如何在c++中将计算分解为两个double和一个char
- 浮点计算更改(如果存储在中间变量中"double"
- 将字符串/字符转换为double,然后使用double进行计算
- 访问向量<向量<double>>并计算值
- 计算pow(double,2)得到一个巨大的数字(C)
- C++函数,从double开始进行基数为10的有效+指数计算