2012-11-18 4 views
0

파일에서 입력을 읽습니다. 나는 형식을 안다. 그래서 파일에서 입력을 읽고 저장하고 싶습니다. 마지막 줄에서 getline을 사용하려고하지만 프로그램이 멈 춥니 다. 이것은 내 입력 파일 데이터입니다.getline으로 인해 프로그램이 멈추는 경우

6 
1 2 2 -4 45 32 
123 4234 -234 34534 54 2344 
1 2 2 3 4 -234 
2 3 -4 -4 4 234 
1 11 123 1234 -12334563 2342 
2 -234 -23 23 4322 2342 
op 2 

입력 파일의 첫 번째 값은 정사각형 행렬의 행/열 수를 나타냅니다. 그렇다면 정사각형 행렬 자체가 있습니다. 마지막으로 작업 코드가 있습니다. 나는 프로그램이 차질없이 작동하는 파일의 마지막 라인을 읽는 루프에서 간단한 "데이터 >> 작업"을 수행 할 때

#include <iostream> 
#include <fstream> 
#include <string> 
#include <vector> 
#include <cstdlib> 

using namespace std; 

int main() 
{ 
    int i,j,matlim; 
    int num; 
    string matrixlimit; 
    string inputfile; 
    string operation; 
    ifstream data; 
    vector< vector<int> > mat1storage,mat2storage; 

    cout<<"Please enter an input file name: "; 
    cin>>inputfile;  

    data.open(inputfile.c_str()); 
    if(data.is_open()) 
    { 
    data >> matlim; 
    while(!data.eof()) 
    { 
     for(i = 0;i<matlim;i++) 
     { 
      vector<int> mat1row; 
      for (j = 0;j<matlim;j++) 
      { 
       data >> num; 
       mat1row.push_back(num); 
      } 
      mat1storage.push_back(mat1row); 
     } 

     getline(data,operation); 
     cout << operation; 

    } 
} 
data.close(); 
} 

:

이 내 코드입니다. 하지만 getline을 사용하려고하면 작동하지 않습니다 ... 내가 뭘 잘못하고 있니? 고맙습니다.

답변

0

Getline은 구분 문자가 발견 될 때까지 데이터를 읽고 문자열에 저장합니다.

라미네이션 문자 \n

는 텍스트 파일에 op 2 후 빈 줄 바꿈을 삽입하고

+0

원래, 나는 "OP"줄 끝에서 두 번째 행렬을 가지고 작업을해야합니다. 그걸로 getline을 시도했을 때, 프로그램은 여전히 ​​교수형에 처해있었습니다. op 라인과 두 번째 매트릭스 사이에 개행 문자가 있어야했지만 차이는 없습니다. –

관련 문제