2013-06-30 33 views
0

我有一个指针指向字符串以下计算,我想该字符串转换成计算double类型数。但是,我不知道如果我的字符串是一个stringchar*我是否访问由指针指向正确的字符串。下面是我的代码:转换串/字符将翻一番,与双

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结果十位数左右。谁能帮忙?

+2

你有 '%d' 而不是 '%LF'。 –

回答

1

首先,因为你正在使用c_str,你的字符串不能char*类型;最有可能的是std::string

另外,您不需要创建字符串的副本:std::string str = msg->data是多余的(尽管它不会造成伤害)。

至于坏输出你 - Shashwat库马尔指出,您的代码不正确打印数量,尽管数字本身是正确的。如果ROS_INFO具有相同的语法printf,用%lf%f格式说明打印数量double类型:

ROS_INFO("I am making calculation: [%f]", fmsg + 1); 

(也没有必要拼11.0,你可能更喜欢1.0,如果你认为这是更好)