const char *RecBuffer, int *packetLength
指向数据和大小
string packet(RecBuffer,*packetLength);//store here
...do some stuff
RecBuffer = packet.c_str();//retrieve it later
现在发生的事情是我的Recbuffer包含很多浮点数和与我一起作为UDP数据包接收的ints数据包。但是,当我存储并从字符串中检索它时,它包含垃圾。
我要去哪里错了?
最佳答案
我怀疑名为std::string
的packet
实例在使用RecBuffer
之前已被破坏或修改,这意味着RecBuffer
是一个悬空指针。您需要复制packet
的内容,而不是存储对其内部成员的引用。与其使用char*
(如Bartek的评论)动态分配std::vector<char>
建议,不如:
std::vector<char> RecBuffer(packet.begin(), packet.end());
使用
&RecBuffer[0]
(或c ++ 11中引入的RecBuffer.data()
(如果可用))访问内部阵列。