如何从字符串中存储和检索char*?

0 c++ stl

const char *RecBuffer, int *packetLength 指向数据和大小

    string packet(RecBuffer,*packetLength);//store here
     ...do some stuff
    RecBuffer = packet.c_str();//retrieve it later
Run Code Online (Sandbox Code Playgroud)

现在发生的事情是我的Recbuffer包含大量的浮点数,并且我将收到的数据包作为UDP数据包收到.但是当我从字符串中存储和检索它时,它包含垃圾.

我哪里错了?

hmj*_*mjd 7

我怀疑在使用之前,std::string名为的实例packet正在被破坏或修改RecBuffer,这意味着它RecBuffer是一个悬空指针.您需要复制内容packet而不是存储对其内部成员的引用.而不是char*使用std::vector<char>(如Bartek评论)动态分配建议:

std::vector<char> RecBuffer(packet.begin(), packet.end());
Run Code Online (Sandbox Code Playgroud)

使用&RecBuffer[0](或RecBuffer.data()如果可用,在c ++ 11中引入)来访问内部数组.