【发布时间】:2014-07-19 15:22:42
【问题描述】:
我需要一种方法来将三种不同类型的结构写入二进制文件,稍后必须对其进行搜索。 (例如,struct A 有两个字段,一个 int 和一个 char;struct B 有 int 和一个 long;我需要输出所有 int 等于键盘给出的结构的结构)。
我了解如何将相同类型的结构写入文件以及如何搜索它们,但是在这里我迷路了,我想出的最好的办法是声明一个包含所有可能需要的字段的结构并留下我没有的不需要空,但确实感觉不对,必须有更好的方法来做到这一点。
我已经阅读了有关二进制文件的信息,但找不到任何相关内容,大多数示例和教程都涉及编写一种数据类型。谁能指出我正确的方向?
编辑:我正在寻找@Jerry_coffin 所谓的数据库模式,并且可能会为此使用现有的数据库系统之一,这可能是最好的方法。谢谢大家的建议
【问题讨论】:
-
你可以有一个 int 类型的第一个成员来指示它是什么类型的结构
-
使用合理的序列化方案,例如协议缓冲区或 Boost。
-
@bits_international 这很有意义,但是在读/写时我必须使用 sizeof(struct 不管什么),所以在这种情况下,我必须首先对结构的大小做出假设,并实际学习后来是什么样的结构?
-
如果您想要快速随机访问,实际上可能需要根据类型将一些“字段”留空。
-
你可以使用联合。或者,如果您在编写之前拥有所有数据,请在编写时按类型和 id 对其进行排序。然后您可以在 3 次快速二进制搜索中找到
标签: c++ c struct io binaryfiles