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

2023-12-23

我想在 C++ 中执行以下操作:

  1. 创建命令对象
  2. 序列化它
  3. (发送到另一台电脑)
  4. 反序列化
  5. 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(使用前将#替换为@)

C++ 中的命令模式序列化 的相关文章

随机推荐

  • 地图注释搜索

    我关注了一个如何使用 apples mapkit 搜索位置 https www thorntech com 2016 01 how to search for location using apples mapkit 关于搜索annotat
  • 如何获取 iPhone 中录制的音频的时间?

    我正在使用录制音频AVAudioRecorder 现在我想获得我录制的音频的确切持续时间 我怎样才能得到它 我试过这个 AVURLAsset asset AVURLAsset alloc initWithURL avAudioRecorde
  • 当我创建太多分区时,postgreSQL 的性能严重下降[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不明白当我为表创建太多分区时 为什么 postgreSQL 会出现性能下降 100 gt 0 05 秒 200 gt 0 07 秒 40
  • 使用 RxJS 进行批处理?

    我猜想这应该很容易实现 但我在解决它时遇到了困难 我猜是概念上 我拥有的是一个返回 JSON 对象数组的 API 我需要单步执行这些对象 并对每个对象进行另一个 AJAX 调用 问题是处理每个 AJAX 调用的系统一次只能处理两个活动调用
  • 如何在带有 razor 的 MVC 3 中使用正则表达式

    当我将 MVC 3 与 razor 一起使用时 它工作正常 但是当我使用 section head 编写正则表达式时 他们不起作用 function isValidEmailAddress emailAddress var pattern
  • TortoiseSVN不保存密码

    我在 Windows 7 Professional 64 位中安装了 Tortoisesvn 1 8 7 乌龟总是要求保存密码 但还是不保存 我多次清除路径 AppData Roaming Subversion 但没有在 svn simpl
  • 禁用 Ruby on Rails 中的文本框?

    我有代码 我想禁用使用嵌入式 ruby 的文本框 但无法这样做 如果我能就我所面临的情况获得任何帮助 我将不胜感激 禁用文本框后 我想让一个按钮从数据库表 项目符号 生成四个随机 ID 并将它们以数组格式打印在禁用的文本框中 并利用这四个打
  • 编辑电子邮件地址后无法登录

    I have 格里特 v3 0 0在我的服务器上运行 昨天一切正常 这是我的身份验证方法 auth type http emailFormat 0 domain com 我不确定这是否是问题的原因 但我可能已删除我的电子邮件地址 电子邮件受
  • 将列值从一个数据库.表复制到另一个数据库.表

    让我们保持简短而甜蜜 我想这样做 我现在已经失败了很多次 一次尝试甚至用空白更新了行 UPDATE Database2 Table1 SET Database2 Table1 Column1 Database2 Table1 Column2
  • Node Express 强制所有静态路由指向根路径

    我有一个 node js 应用程序 我正在尝试对其进行通用化 以便无论后端的 URL 是什么 它始终使用根路径来提供静态文件 所以目前我的应用程序位于https myapp heroku com https myapp heroku com
  • 如何在 twitter-bootstrap 中停止图像响应?

    我正在使用 twitter bootstrap 来制作响应式布局 它的效果非常棒 它使图像过于敏感 我需要一些图像只需要固定宽度和高度 div class span1 img src http i ytimg com vi uGBKzIY4
  • 在asp.net MVC中,我们可以从另一个控制器调用一个控制器的方法吗?

    在asp net MVC中 我们可以从另一个控制器调用一个控制器的方法吗 您也可以直接重定向到该方法 如下所示 public class ThisController public ActionResult Index return Red
  • 如果 using 块返回,IDisposable 是否会被释放?

    例如 using var something GetSomething something DoSomething if something IsX return true return false 是的 一点没错 这Dispose方法被调
  • C# - 如何将转义字符串转换为文字字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 我可以在运行时展开包含 C 文字表达式的字符串吗 https stackoverflow com questions 3298075 can i expand a string that contai
  • 有没有办法在 C++ 中传递字符串文字作为引用

    在 C 中 如果值不能为 NULL 则通常通过引用而不是指针传递 假设我有一个具有以下签名的函数 该函数通常与字符串文字一起使用 void setText const char text 我想知道如何更改函数以使其接受引用 并且具有不接受
  • Java中的paintComponent()没有被调用[重复]

    这个问题在这里已经有答案了 我正在尝试绘制一个简单的矩形 但我认为 PaintComponent 方法没有被调用 这是带有 main 方法的类的代码 package painting import java awt import javax
  • 电子,在browserify之后,fs.existsSync不是一个函数

    我读了很多关于 browserify 和 electro 以及 gui 浏览器问题 但 browserify 仍然存在问题 说 fs existsSync 不是一个函数 并且 required 未定义 完整的故事 我用电子创建了简单的图形用
  • 关于静态方法的 Java 编码约定

    这是一个非常简单的问题 但我认为这是一个有点争议的问题 当我编写 Java 类代码时 我使用以下顺序 class Foo static fields instance fields constructors methods non stat
  • 使用JDK的JAXB,不带ns2前缀

    在阅读了 Oracle 论坛 Stackoverflow java net 上有关此内容的所有帖子后 我终于在这里发帖了 我正在使用 JAXB 创建 XML 文件 但问题是它添加了著名的ns2在我的元素之前添加前缀 我已经尝试了所有没有人为
  • C++ 中的命令模式序列化

    我想在 C 中执行以下操作 创建命令对象 序列化它 发送到另一台电脑 反序列化 execute 两种情况 发送者和接收者都是win 7 电脑 发送者是 nix 接收者是 win 7 我找到了一个序列化教程 http www function