0

マトリックスデータを含むファイルをブーストマトリックスに読み込もうとしています。""には、この種の演算子のオーバーロードがあるはずであり、標準ストリーム(cout)に書き込むことができます。逆に行くことの何が悪いのかわかりません。私はC++にかなり慣れていないので、ファイルストリームに関して間違った仮定をしていると思いますが、それは理にかなっているように見えました。これが私が行っているウェブページです:

http://www.boost.org/doc/libs/1_51_0/boost/numeric/ublas/io.hpp

http://www.cplusplus.com/reference/iostream/ifstream/ifstream/

これが私のコードです:

using namespace std;
matrix<double> M;
ifstream s("C:\temp\perm.txt", ifstream::in);

s >> M;
s.close();

std::cout << M;

私のファイルは次のようになります。

[4,4]((0,0,1,0),(0,0,0,1),(0,1,0,0),(1,0,0,0))
4

1 に答える 1

1

これは小さな例です。試してみて、何が起こるか見てください。これでうまくいかない場合は、ファイル パスが間違っているか、プログラムがテキスト ファイルからの読み取りに失敗している可能性があります。

#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <iostream>
#include <fstream>

int main()
{
    boost::numeric::ublas::matrix<double> m;
    std::ifstream s("C:\temp\perm.txt");
    if (!s)
    {
        std::cout << "Failed to open file" << std::endl;
        return 1;
    }
    if (!s >> m)
    {
        std::cout << "Failed to write to matrix" << std::endl;
        return 1;
    }
    std::cout << "Printing matrix: ";
    std::cout << m;
}
于 2012-09-16T21:39:16.830 に答える