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::stringpacket实例在使用RecBuffer之前已被破坏或修改,这意味着RecBuffer是一个悬空指针。您需要复制packet的内容,而不是存储对其内部成员的引用。与其使用char*(如Bartek的评论)动态分配std::vector<char>建议,不如:

std::vector<char> RecBuffer(packet.begin(), packet.end());


使用&RecBuffer[0](或c ++ 11中引入的RecBuffer.data()(如果可用))访问内部阵列。

10-08 08:37