我创建了一个用于处理二进制文件的小工具。读取文件和处理文件所涉及的所有函数都是模板化的,类似于:
template <class T> void processFile( const char* fileName );
模板参数T
用于确定将被读取并视为一项的数据的大小。我不知道如何准确地说出来,所以举个小例子(注意这些是用 hexeditor 看到的二进制数据)。文件内容:
BEEF1234DEAD5678
对于T
unsigned char,项目是:BE EF 12 34 DE AD 56 78
对于T
unsigned int,项目是:BEAF1234 DEAD5678
对于T
double:BEAF1234DEAD5678
(请注意,我假设这里unsigned char
是 1 个字节,unsigned int
是 4 个字节,并且double
是 8 个字节大。)T
它也用于 STL 容器,因为我经常使用它们(向量、映射和列表在许多处理文件所涉及的功能)。使用内置数据类型(char、int 等),一切都可以正常工作。
现在我的问题是什么:我希望能够使用不同于 1、4、8 的尺寸。例如 16、32 甚至 6、10、14 等。据我所知,这些尺寸没有内置类型。我怎样才能做到这一点?我主要担心的是我需要 STL 容器中的数据并使用 sort() 例如。POD 结构会起作用吗?请注意,我主要使用 C 函数进行读取(这里没有流,但有一些 memcpy 和 memcmp、fread 等)。
抱歉没有提供更多代码,我现在正在使用我的备用笔记本电脑。但我相信不需要更多的代码。如果是这样,我将在明天提供。