2014-12-04 45 views
0

读它,我用的fwrite保存整数10×10矩阵I在Matlab成一个二进制文件:保存在Matlab矩阵的bin文件和C++

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类型的本征矩阵?

感谢

回答

0

当你写使用的论据precision'int'值值fwrite,它将它们写入为4字节的整数,所以你的10×10矩阵会占用10x10x4 = 400个字节。但是你只分配一个10×10 = 100字节长的缓冲区。

+0

除此之外,要知道问题出在哪里,而不告诉我们你看到了什么错误,这有点难。 – Tom 2014-12-04 06:04:41

+0

谢谢汤姆。我将尺寸更改为10 * 10 * 4,并且仍然返回错误。变量'I'是我在Matlab中计算出的10x10个整数值的矩阵。我想将它加载到C++程序并对其进行一些矩阵计算。但显然C++ file.read只读取char变量,而不是整数 – Ash3323 2014-12-04 19:26:08

+1

那么,你可以告诉我们错误是什么... – Tom 2014-12-05 01:44:15