2011-03-15 2 views
0

저는 java/C# 개발자이며 텍스트 파일에서 데이터를 읽는 C 또는 C++ 코드를 작성하려고합니다. 이것은 매우 쉽게 자바와 C#에서 이루어 지지만 C 나 C++에서는 그렇지 않다. C++의 TextFile에서 읽기

TEXTFILE

는이 같은 외모를 읽고있다 :

a,b,c,d,e 
1,0,1,1,0 
0,1,1,0,0 
0,0,0,1,1 

내가이 개 배열의 값을 저장해야합니다.

1 0 1 1 0 
    0 1 1 0 0 
    0 0 0 1 1 

내가 이것을 어떻게 할 수

: a b c d e
2 일이 포함됩니다 차원 부울 배열 :
1 일을 포함하는 1 차원 문자 배열입니까?

+1

[이 질문에] (http://stackoverflow.com/questions/415515/) 유용한 정보가 포함되어있을 수 있습니다. –

+0

C 또는 C++? 응답은 (나는 생각한다), 또는 적어도, 매우 다를 수있다. 또한 예제에서 "a, b, c, d, e"는 항상 단일 문자로 구성됩니다 (예 : "foo, bar, baz, qux, quux")? – pmg

+0

나중에 벡터를 저장하려면 벡터 내부에 저장하는 것이 좋습니다. – ultifinitus

답변

1

적어도 내가하려는 것을 시도해보십시오. 시작하는 데 도움이되도록 제안한 예제 데이터를 읽으십시오. 이 예제는 다른 데이터 세트를 충족시키기 위해 확장 할 수있을만큼 단순해야합니다.

a b c d e 
1 0 1 1 0 
0 1 1 0 0 
0 0 0 1 1 

그리고 출력 :

#include <iostream> 
#include <fstream> 

int main() { 
    const int n_letters = 5; 

    const int n_columns = 5; 
    const int n_rows = 3; 

    char letters[n_letters]; 
    bool booleans[n_rows][n_columns]; 

    std::ifstream stream("myfile.txt"); 
    if (stream) { 
     for (int i = 0; i < n_letters; ++i) { 
      stream >> letters[i]; 
      std::cout << letters[i] << ','; 
     } 
     std::cout << '\n'; 
     for (int i = 0; i < n_rows; ++i) { 
      for (int j = 0; j < n_columns; ++j) { 
       stream >> booleans[i][j]; 
       std::cout << booleans[i][j] << ','; 
      } 
      std::cout << '\n'; 
     } 
    } 
    return 0; 
} 

는 다음과 같은 텍스트를 읽어

a,b,c,d,e 
1,0,1,1,0 
0,1,1,0,0 
0,0,0,1,1 
+0

숫자에 2 차원 배열을 사용해야합니다 (op = 2 차원). – Shinnok

+0

@Shinnok, OP 스펙대로 수정 됨 – dcousens

0

첫 번째 코멘트 : 파일을 구문 분석 할 때, 그것은 라인으로 파일 라인을 읽을 종종 유용, 그리고 std :: istringstream 또는 boost :: regex를 사용하거나 각기 다른 기술을 사용하여 각 행을 구문 분석하십시오. 나는 boost :: regex를 좋아하는데 왜냐하면 즉시 은 구문 오류가 있음을 나타내지 만 신중하게 설계된 경우 istream도 가능합니다.

어떤 경우 든 가장 먼저 정확하게 형식을 지정하는 것입니다. 항상 하나의 문자가 있습니까? 숫자는 항상 0과 1입니까? 한 줄에 항상 정확히 5 개의 값이 있습니까? 우리가 알기 전까지는 더 많이 말하기가 어렵습니다.