我想在 C++ 中执行以下操作:
- 创建命令对象
- 序列化它
- (发送到另一台电脑)
- 反序列化
- execute
两种情况:
- 发送者和接收者都是win 7
电脑
- 发送者是 *nix,接收者是 win
7
我找到了一个序列化教程:http://www.functionx.com/cpp/articles/serialization.htm http://www.functionx.com/cpp/articles/serialization.htm。这是要走的路吗?在 python 中我可以这样做:
def setAndPackCommand(self, object):
outFile = StringIO.StringIO()
pickledC = pickle.dump(object, outFile) # this packs object to outFile
stringToSend = outFile.getvalue() # decoding to string
def unpackAndExecute(self, stringToReceive):
inFile = StringIO.StringIO()
inFile.write(stringToReceive)
inFile.seek(0, 0)
receivedC = pickle.load(inFile)
receivedC.execute()
在此代码中,要点是 pickle.dump 和 pickle.load。 C++ 的对应项是什么?维基百科说c++不支持序列化?那上面的链接是什么?
二进制序列化是什么意思?内存转储到磁盘并且反序列化需要完全相同的计算机(无跨平台传输)?
br,
Juha
我还建议使用稳定的库,例如boost.serialization
用于序列化数据。
如果您不熟悉序列化,这意味着将对象转换为适合传输或存储的数据表示形式,并从该数据表示形式重建它们。所谓的难度其实并不大POD(普通旧数据对象) http://en.wikipedia.org/wiki/Plain_old_data_structure。您可以将缓冲区作为数据传输,并在传输后通过处理将其转换回来数据对齐 http://en.wikipedia.org/wiki/Data_structure_alignment and 字节顺序 http://en.wikipedia.org/wiki/Byte_ordering(字节序)。如果对象引用其他对象,事情就会变得更加复杂,然后使用设计良好的库才真正有意义。 Boost 的序列化还支持版本控制,因此您可以更新格式并保持向后兼容的读取器和写入器(当然需要付出一些努力)
这是一个很好的介绍。 http://www.boost.org/doc/libs/1_46_0/libs/serialization/doc/index.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)