Вы можете перезагрузить оператор >>, чтобы правильно прочитать целые числа. Конечно, все, что он будет делать, это прочитать () 4 байта Но это то, что все остальные операторы в конечном итоге делают в любом случае.
Вот пример (без проверки ошибок, при условии, что endianess совпадает с текущим компилятором и т. Д.)
std::istream& operator>>(std::istream& in, uint32_t& data)
{
in.read(&data, sizeof(data));
return in;
}
Подгонка под ваш собственный набор целых чисел (возможно, придется читать по одному байту за раз и сдвигать их, смотреть на файл в шестнадцатеричном редакторе, если вы не знаете порядок байтов), добавлять проверку ошибок, и вы должны возможность использовать существующий код.
РЕДАКТИРОВАТЬ: ах, и да, убедитесь, что эти тени предоставляют оператор stl, который читает целое число - возможно, придется извлечь свой собственный класс из потока, который вы используете, и использовать его вместо std :: istream & in, просто чтобы компилятор знал кого проверять первым.