2012-09-16 3 views
0

매트릭스 데이터가 포함 된 파일을 부스트 매트릭스로 읽으려고합니다. ""이미 이런 종류의 연산자 오버로드가 있고 표준 스트림 (cout)에 쓸 수 있습니다. 나는 다른 방향으로 가면서 무엇이 잘못되었는지를 모른다. 저는 C++을 처음 접했을뿐입니다. 그래서 파일 스트림에 관해 잘못된 가정을하고 있다고 생각합니다.하지만 이해가가는 것 같았습니다. 저는 여기에 갈거야 웹 페이지입니다 :C++ boost Uublas에서 파일을 매트릭스로 스트리밍하려면 어떻게해야합니까?

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)) 
+2

표시 한 내용에는 아무런 문제가 없습니다. [여기에 제가 만든 작은 예가 있습니다] (http://ideone.com/0Kb8L), 문제는 무엇입니까? –

+0

@Jesse하지만 ... 뭔가 ideone 이상한입니다. 프로그램을 포크 할 때'prog.cpp : 1 : 38 : fatal error : boost/numeric/ublas/io.hpp :이 파일이나 디렉토리에 다음과 같은 오류가 발생합니다 : #include '- 여기에 프로그램이 있습니다 - http://ideone.com/06Zsrf. 뭐라 구요? – lifebalance

+1

@lifebalance : ideone 제거 부스트 지원. 부스트를 지원하기 때문에 [coliru] (http://coliru.stacked-crooked.com/a/bdb16549d800db84)를 대신 사용하십시오. –

답변

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; 
} 
관련 문제