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

时间:2013-02-15 15:30:07

标签: c++ stl

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

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

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

我哪里错了?

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:1)

使用memcpy:

RecBuffer[packet.size()]=0;
memcpy(RecBuffer, packet.c_str(), packet.size());