Как я могу передать файл в матрицу в C ++ Boost Ublas?

Я пытаюсь прочитать в файле, который содержит данные матрицы в матрицу повышения. «» уже должен иметь перегрузки операторов для такого рода вещей, и я могу заставить его писать в стандартный поток (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))

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:\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;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]