2013-03-26 13 views
0
firstword secondword thirdword fourthword ... 

내 텍스트 파일에는이 순서와 같은 200 단어가 포함되어있어 이상한 문자가없는 배열로 2D 고정 길이로 읽고 복사하려고합니다. 다음 코드로이 작업을 수행 할 수 없습니다.텍스트 파일에서 단어 읽기

ifstream FRUITS; 
FRUITS.open("FRUITS.TXT"); 


    if(FRUITS.is_open()) 
    { 
     char fruits1[200][LEN]; 
     int c; 

     for(c = 0; c < 200; c++) 
     { 
      char* word; 
      word = new char[LEN]; 

      FRUITS >> word; 

      for(int i = 0; i < LEN; i++) 
      { 
       fruits1[c][i] = word[i]; 
      } 
     } 
    } 

어떻게하면됩니까?

+0

'이상한 문자'는 매우 설명적입니다. –

+0

코드에서 언급하지 않은 것을 언급했습니다. ** ** 무엇을합니까? –

+1

'LEN'은 가장 긴 단어의 길이 + 1입니까? –

답변

0

단어의 길이가 LEN 미만인 경우 wierd 문자가 표시되지 않도록 단어 끝에 '\0'을 추가해야합니다.

그러나 작업에 벡터 문자열을 사용하는 것이 좋습니다.

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

using namespace std; 
int main() 
{ 
    fstream file; 
    vector<string> v; 
    file.open("FRUITS.txt"); 
    string tmp; 
    while(!file.eof()) 
    { 
     file >> tmp; 
     v.push_back(tmp); 
    } 
    for(vector<string>::iterator i=v.begin(); i!=v.end(); i++) 
    { 
     cout << *i << endl; 
    } 
    file.close(); 
    return 0; 
} 
+1

'FRUITS >> word;''\ 0''을 추가해야합니까? –

+0

그래, 그렇다. 그럼 아마 문자열을 좋아하지는 않지만 문자 나 문자 같은 배열을 인쇄 할 것입니다. 그는 배열을 출력하는 코드를 제공하지 않습니다. –

0

이것에 대해 생각 :

FRUITS >> fruits1[c]; 

하지만 LEN이 보유 할 충분한 지 확인해야 모든 각 단어의 char 플러스 '\0'.

걱정하지 마십시오. "=+½$#".cout << fruits1[c];과 같은 작업을 수행하면 인쇄되지 않습니다.