如何在不使用任何外部库的情况下将以下C ++结构序列化/展平为字节数组或其他任何内容。
struct node
{
string splitOn;
string label;
bool isLeaf;
vector<string> childrenValues;
vector<node*> children;
};
答案 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 *
第一个和第二个参数。