gpt4 book ai didi

c++ - C++中的命令模式序列化

转载 作者:太空狗 更新时间:2023-10-29 21:50:51 29 4
gpt4 key购买 nike

我想用 C++ 执行以下操作:

  1. 创建命令对象
  2. 序列化
  3. (发送到另一台电脑)
  4. 反序列化
  5. 执行

两种情况:

  • 发送者和接收者都是 win 7计算机
  • 发件人是*nix,收件人是win7

我找到了序列化教程: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,巨哈

最佳答案

我还建议使用像 boost.serialization 这样的稳定​​库来序列化数据。

如果您不熟悉序列化,这意味着将对象转换为适合传输或存储的数据表示,并从该数据表示重建它们。所谓PODs (Plain Old Data objects)难度其实不大.您可以将缓冲区作为数据传输并在传输后通过处理 data alignment 将其投回。和 byte ordering (字节顺序)。如果对象引用其他对象,它会变得更加复杂,然后使用设计良好的库才真正有意义。 Boost 的序列化还支持版本控制,因此您可以更新格式并保持与读者和作者的向后兼容(当然需要付出一些努力)

Here is a good introduction.

关于c++ - C++中的命令模式序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237639/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com