Возможно, вы используете fstream
неправильно. Если вы откроете его в текстовом режиме, вы получите конверсии, которые испортят ваш процесс загрузки. Вам нужно открыть файл как двоичный файл.
std::ifstream file("something.model", std::ios::binary);
Затем вы можете прочитать необработанные данные:
// read in float
float f;
file.read(&f, sizeof(f));
Как вам нужно. Имейте в виду, что такие типы, как int
или char
, не обязательно имеют правильную битовую ширину. Если вы хотите быть уверены, вам нужны целые числа фиксированной ширины. Boost предоставляет такую библиотеку .
#include <boost/cstdint.hpp>
// ...
// read a 32-bit int
boost::uint32_t i;
file.read(&i, sizeof(i));