c ++自定义结构化文件处理

时间:2019-07-18 23:22:55

标签: c++ data-structures file-handling

tl:dr; 如何处理自定义结构化二进制文件的方法文件?

我有几个自定义文件结构,它们的大小和结构可能有所不同。我试图编写一个文件处理类来管理所有文件,但是我不知道如何处理它。

我目前的方法是:

  1. 在堆上分配一个特定大小的内存,然后将预定义的structs加载到该内存中,然后创建一个带有指针的文件处理类,该指针将读取/写入该特定大小的内存。
  2. 使一个类可以读取/写入文件,并带有2个指针。 MEMLOC指向内存的开始,curr_pos指向内存中的当前位置。然后用头,身体和脚的尺寸初始化类,这将生成一个新的堆数组,该堆数组将填充类对象。
  3. 制作一个file_read / file_write函数,这些函数将接受vector作为具有完整结构的参数。

主要问题是,我具有不同的文件结构,其中块从4个字节变化到20个(有时甚至是50个)字节。而且由于文件必须能够在块之间来回转换为二进制结构...我不确定如何采用这种方式。

那么有人可以将我链接到一些文献/ github /上可以帮助我进行自定义结构化文件处理的内容吗?


编辑:

我要问的不是“对于Stack Overflow来说,建议或查找书籍,工具,软件库,教程或其他非现场资源都是不合时宜的”。问题是,谷歌甚至没有给我提供任何线索,而且堆栈溢出没有提供任何对使用基本文件流头之外的内容有深刻见解的答案。我要问的是对fstream.open较复杂的话题的见解,同时仍在尝试确保安全并避免内存泄漏。

我已经看到足够多的use boostuse vectorsuse this magic library帖子,但没有人真正了解它在工具或魔术库之外的工作方式。

所以我会再次询问

一种方法如何自定义结构化文件处理?
人们应该注意哪些通用陷阱?
可以/无法避免的跨平台问题?

由于这些问题是特定的,因此通常需要大量解释。而且由于堆栈溢出充满了 tl; dr; 伙计们/加尔斯,我完全开放了小段文字,并链接到github / book来进一步研究。

如果堆栈溢出的策略不是显示cplusplus.com可以提供的更复杂的问题的答案,那我就失去声誉-因为我宁愿错并向其学习而不愿学习。如果我由于某种原因而被禁止使用-那么请把我指向有效的堆栈交换站点,在这里我可以问这种问题。

0 个答案:

没有答案