Я создал небольшой инструмент, который используется для обработки двоичных файлов. Все функции, связанные с чтением файлов и их обработкой, являются шаблонными и похожи на это:
template <class T> void processFile( const char* fileName );
Параметр шаблона T
используется для определения размера данных, которые будут считываться и обрабатываться как один элемент. Я не знаю, как сказать это точно, поэтому крошечный пример (обратите внимание, что это двоичные данные, как видно с шестнадцатеричным). Содержание файла:
BEEF1234DEAD5678
С T
как неподписанным символом, элементы: BE EF 12 34 DE AD 56 78
С T
, являющимся неподписанным int, элементы: BEAF1234 DEAD5678
С T
является двойным: 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 и т. Д.).
Извините, что не предоставил больше кода, сейчас я использую свой запасной ноутбук. Но я считаю, что больше кода не должно быть необходимо. Если так, я предоставлю это завтра.