我正在为ELF文件设计一个解析器,该解析器定义了命名部分,将其分成具有各自偏移量和大小的片段。
我想使用标准库的<iostream>
工具为所有类提供标准化接口。大多数时候,仅加载ELF文件的某些部分,因此将整个文件加载到内存中并向解析器传递缓冲区是浪费的。取而代之的是,它应该接受哪种输入? std::istream
,std::streambuf
,文件名或其他名称?
此外,其中一些部分可能会很大,因此当库的用户要求特定部分时,我不想返回缓冲区。理想情况下,我想提供“受限流”,以便用户代码只能访问他们请求的ELF文件的部分。此外,在此受限视图内的搜索/告诉会更正其在文件内的偏移量。
在保持与接受流的函数的兼容性的同时,如何构造此代码?