如何继续使用.read读取二进制文件?

时间:2013-07-10 13:48:02

标签: c++ loops file-io binary

我正在尝试读取包含1501 x 1501双精度矩阵的二进制文件,并将其插入到特征矩阵中。这是我的代码:

#include <fstream>
#include <iostream>
#include <Eigen/Dense>
#include <string>

using namespace std;
using namespace Eigen;

int main()
{
    MatrixXd B(1501, 1501);
    ifstream inputFile;

    double toread;

    inputFile.open("/path/to/bathymetry_S1000s2500s_E65d1000s65d2500s.bin",
                   ios::out | ios::in | ios::binary);
    if (!inputFile) {
        cout << "The file can't be opened.\n";
        exit(10);
    } else {    
        for (int i2 = 0; i2 < 1501; i2++) {
            for (int i1 = 0; i1 < 1501; i1++) {
                inputFile.read( reinterpret_cast<char*>( &toread ),
                                sizeof(toread) );
                inputFile >> toread;
                B(i1, i2) = toread;
            }

        }
        inputFile.close();
    }

    cout << "Max value:" << B.maxCoeff() << endl; // Just to check the result
    cout << "Mean Value:" << B.mean() << endl; // The same
}

我的问题是,当我运行代码时,我的矩阵B实际上只填充了inputFile的第一个值,即-4502,然后由两个cout给出。 (矩阵的所有元素都是-4502)。如何使编译器理解我希望它继续在前一个值之后读取inputFile,而不是从每个循环步骤的开头开始?

0 个答案:

没有答案