Я пытаюсь прочитать в файле, который содержит данные матрицы в матрицу повышения. «» уже должен иметь перегрузки операторов для такого рода вещей, и я могу заставить его писать в стандартный поток (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))
Вот небольшой пример, пожалуйста, попробуйте и посмотрите, что происходит. Если это не работает, я подозреваю, что проблема в том, что путь к файлу неверный или программа не может прочитать из текстового файла:
#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;
}
Других решений пока нет …