展平C ++结构

时间:2018-03-20 09:33:42

标签: c++ c serialization flatten

如何在不使用任何外部库的情况下将以下C ++结构序列化/展平为字节数组或其他任何内容。

struct node                                                 
{
    string splitOn;                                         
    string label;                                           
    bool isLeaf;                                            
    vector<string> childrenValues;                          
    vector<node*> children;                                 
};

2 个答案:

答案 0 :(得分:3)

没有这样的标题作为C ++的一部分,.h名称已被弃用且不再使用。您的意思是<sstream>还是<iostream>?如果您没有使用serailization库,您必须自己编写。例如。定义序列化运算符。没有像java那样的语言定义的序列化,如果你应该考虑版本更改,你必须设计一个新的或使用现有的表示格式。

答案 1 :(得分:-4)

您可以使用memcpy将结构node中的逐位信息复制到字符数组frame中,如下所示:

struct node obj;
char frame[1024];
memcpy ( frame, &obj, sizeof(struct node) );

然后您可以逐位发送frame并稍后恢复结构:

memcpy ( &obj2, frame, sizeof(struct node) );

但是,我还没有测试过这段代码。您可能需要转换为void *第一个和第二个参数。