将string / char转换为double并使用double进行计算

时间:2013-06-30 18:43:57

标签: c++ string type-conversion

我有一个指针指向的字符串,我想将该字符串转换为双重类型数进行计算。但是,我不确定我的字符串是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会产生十位数字左右。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

首先,由于您使用的是c_str,因此您的字符串不能是char*类型;最有可能的是std::string

此外,您不需要创建字符串的副本: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