Я сохранил целочисленную матрицу 10x10 I
в Matlab в двоичный файл, используя fwrite:
fid = fopen('True.bin' , 'w');
fwrite(fid , I , 'int');
fclose(fid)
Теперь, когда я пытаюсь открыть его в C++, используя библиотеку fstream, он возвращает ошибку. Код C++ выглядит следующим образом:
int IMG_SIZE = 10;
char * buffer;
long size = IMG_SIZE * IMG_SIZE;
ifstream file ("True.bin", ios::in|ios::binary|ios::ate);
buffer = new char [size];
file.read (buffer, size);
file.close();
Любая идея, как загрузить файл в массив или собственную матрицу типа MatrixXi
?
благодаря
Когда вы пишете значения, используя значение 'int'
для аргумента precision
для fwrite
, он записывает их как 4-байтовые целые числа, поэтому ваша матрица 10x10 будет занимать 10x10x4 = 400 байт. Но вы выделяете буфер длиной 10x10 = 100 байт.
size
до10*10*4
и по-прежнему возвращает ошибку. ПеременнаяI
представляет собой матрицу из целых значений 10x10, которые я вычислил в Matlab. Я хочу загрузить его в программу C ++ и выполнить некоторые матричные вычисления. Но, видимо, c ++ file.read читает только в переменных char, а не целых