如何在C++增强 ublas 中将文件流式传输到矩阵中

How do I stream a file into a matrix in C++ boost ublas?

本文关键字:传输 文件 C++ 增强 ublas      更新时间:2023-10-16

我正在尝试将包含矩阵数据的文件读取到boost矩阵中。" 已经应该为这种事情提供运算符重载,我可以让它写入标准流 (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:tempperm.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))

这里有一个小例子,请尝试一下,看看会发生什么。如果这不起作用,我怀疑问题是文件路径错误或程序无法从文本文件中读取:

#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:tempperm.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;
}