首页 > 解决方案 > C/C++中结构体的序列化和反序列化

问题描述

我有一个像这样的结构:

typedef struct myStruct
 {

                int attr;
                 char *name;
                 size_t nameSize;

 }

我想序列化它并序列化它。我找到了答案,但他们都使用了更简单的结构(没有指针)。此外,在我的函数中,我必须接收指向结构的指针,而不是结构本身。所以我不能使用sizeof。

如何将其序列化到缓冲区中,以便以后反序列化它?

int serializeData(myStruct *componentInfo, void *buffer, size_t bufferSize, size_t *result)
{

    int dataSize = 0;
    dataSize += sizeof(int);
    dataSize += strlen(componentInfo->name);
    dataSize += sizeof(size_t);
    char data[dataSize+1];

    int offset =0;
    memcpy(data, &componentInfo->attr, sizeof(int));
    offset+=sizeof(int);

    memcpy(data + offset, &componentInfo->nameSize, sizeof(size_t));
    offset+= sizeof(size_t);

    memcpy(data + offset, componentInfo->name, componentInfo->nameSize);
    offset+= componentInfo->nameSize;

    printf("%s",data);
    printf("a    %zu",strlen(data));
    return 1;
}

标签: c++serializationstructdeserialization

解决方案


推荐阅读