所以我有一个C++中的double的i by j矩阵,我想读入IDL程序。

可以说该矩阵称为数据,大小为COLS,ROWS,名称字符串保存到文件名。我只是将值以流的形式写到二进制文件中。

ofstream myfile (filename, ios::binary);
if(myfile.isopen())
{
  for (int i = 0; i < ROWS; i++){
     for (int j=0; j < COLS; j++){
          myfile<<data.at(i,j);
}
myfile.close();

然后,我想将其读回IDL,但是我是使用IDL中的二进制文件的新手,而按照文档操作后,这里却无法正常工作。
function read_binmatrix, filename, ROWS, COLS, thetype

    mat = READ_BINARY(filename,DATA_TYPE=thetype,DATA_DIMS=[ROWS-1,COLS-1])
    return, mat

end
 ...
 ...
matrix = read_binmatrix(file2,num_rows,num_cols,5)

...但是我得到这个错误作为输出。
% READ_BINARY: READU: End of file encountered. Unit: 100, File:
...
% Execution halted at: READ_BINMATRIX     21
...

最佳答案

 myfile<<data.at(i,j);

将文本写入文件,而不是二进制数据。要以二进制格式写数字,请使用 std::ofstream::write() :
 myfile.write(reinterpret_cast<char*>(&data.at(i,j),sizeof(decltype(data.at(i,j))));

07-24 18:58
查看更多