我遇到了一个奇怪的问题,想知道它为什么会产生这样的行为。我的类中有一个成员函数返回std :: string
,我想将这个string
转换为const char*
,于是我做了以下操作:
const char* c;
c = robot.pose_Str().c_str(); // is this safe??????
udp_slave.sendData(c);
问题是在主控端我得到了一个奇怪的字符。但是,如果我按照以下方式操作
const char* c;
std::string data(robot.pose_Str());
c = data.c_str();
udp_slave.sendData(c);
我得到了我期望的结果。我的问题是前述两种方法之间有什么区别?
pose_Str()
返回一个字符串副本。当pose_Str()
函数返回时,这个临时对象会被释放。所以c
变成了一个野指针。 - billz