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

how to store and retrieve a char* from a string?

本文关键字:检索 char 存储 字符串      更新时间:2023-10-16

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

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

现在发生的事情是,我的Recbuffer包含了很多float和int数据包,它们一起作为UDP数据包接收。但是,当我从字符串中存储和检索它时,它包含垃圾。

我哪里错了?

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

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

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

使用memcpy:

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