c++ - Google Protocol Buffers,在提供的流对象中向后重新定位 IO 头

标签 c++ serialization protocol-buffers file-format

我想将 IO 头移动到某个 CodedOutputStream 或 ZeroCopyOutputStream 的开头,这样我就可以用文件中有多少 protobuf 消息以及后续消息消耗了多少字节来更新 header 数据结构。

Backup function不是为此目的,有什么建议吗?我正在为事件数据创建文件格式,其中每个文件包含多个事件数据集。为此(固定大小)我需要 2 种类型的 header 实体,一种是全局的,另一种是每个数据集的。我在写入数据集事件后更新这些。那么,如何在不破坏流对象的内部状态的情况下移动写入 header ?。

编辑

我想知道,如果我刷新流包装器并只使用 c 函数重新安装头部,这对流类是否有效,还是我会陷入未定义的境地?

最佳答案

我想最明显的方法是有两个文件而不是一个:包含流式数据的主文件,然后是包含 header 信息的索引文件。

关于c++ - Google Protocol Buffers,在提供的流对象中向后重新定位 IO 头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031911/

相关文章:

c++ - 如何在 Qt 中使用自定义标题栏 move 窗口

c# - ProtoInclude 属性是什么意思(在 protobuf-net 中)

javascript - 使用新的 html5 表单属性在 IE 中序列化失败

go - 编译protocol buffer时,缺少输入或程序不可执行错误

go - 在 Go 中构建使用 "oneof"的 protobuf 消息

c++ - QT插件编译问题

c++ - C++ 中的模板和预处理

c++ - 当分配静态指针时,如何使自动完成器识别自动类型变量?

java - 按一定顺序或序列号将两个数组列表合并为一个

iphone - 在 iOS 中实现搜索历史功能