Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将POD结构自动序列化(不使用.proto文件)到协议缓冲区中?_C++_Serialization_Boost_Protocol Buffers - Fatal编程技术网

C++ 如何将POD结构自动序列化(不使用.proto文件)到协议缓冲区中?

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); 不在乎你的结构中有哪些领域。因此,我想知道是否有

假设一个结构中有int、float和两个字符串。我们希望序列化(在Windows x86上)通过internet发送,并反序列化我们相对基于POD的结构(在Linux x64上)。我喜欢protobufs方法,它使数据可以跨不同语言序列化,但有时您只想说:

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序列化为二进制数据,而不是字符串。

请看在上帝的份上,不要发送浮点!求你了,看在上帝的份上,不要送彩车!