C++ 如何将POD结构自动序列化(不使用.proto文件)到协议缓冲区中?
假设一个结构中有int、float和两个字符串。我们希望序列化(在Windows x86上)通过internet发送,并反序列化我们相对基于POD的结构(在Linux x64上)。我喜欢protobufs方法,它使数据可以跨不同语言序列化,但有时您只想说:C++ 如何将POD结构自动序列化(不使用.proto文件)到协议缓冲区中?,c++,serialization,boost,protocol-buffers,C++,Serialization,Boost,Protocol Buffers,假设一个结构中有int、float和两个字符串。我们希望序列化(在Windows x86上)通过internet发送,并反序列化我们相对基于POD的结构(在Linux x64上)。我喜欢protobufs方法,它使数据可以跨不同语言序列化,但有时您只想说: my_obj var; string data =protobuf.serialize(var); my_obj new_war = protobuf.deserialize(data); 不在乎你的结构中有哪些领域。因此,我想知道是否有
my_obj var;
string data =protobuf.serialize(var);
my_obj new_war = protobuf.deserialize(data);
不在乎你的结构中有哪些领域。因此,我想知道是否有可能,以及如何神奇地将包含结构的类似POD的数据(比如所有与boost序列化相关的数据以及支持开箱即用的所有类型)序列化到?您可以定义一个Protobuf模式,将POD结构表示为一个名称和值对的集合,在每个值是原始类型的联合的情况下,真正的问题是C++没有自省任意类型的方式。因此,在代码的某个地方,您需要提供类型的描述
BTW,OrthBuf序列化为二进制数据,而不是字符串。
< P>可以定义一个PotoBuf模式来表示一个POD结构作为名称和值对的集合,其中每个值是原始类型的结合,然而真正的问题是C++没有反省任意类型的方式。因此,在代码的某个地方,您需要提供类型的描述顺便说一句,Protobuf序列化为二进制数据,而不是字符串。请看在上帝的份上,不要发送浮点!求你了,看在上帝的份上,不要送彩车!