2017-10-01 1 views
0

저는 학생이고 행맨 프로그램을 만들려고합니다. 교수형 집행 프로그램에 사용할 words.dat라는 파일이 주어졌지만 데이터를 저장하고 문자열 배열에 저장하는 방법을 모르겠습니다. 파일을 가져 오기 전용 함수를 만들려고합니다. 나는 dat 파일에 단어가 어떻게 나타날지 모르지만 선생님은 최대 100 명이있을 것이라고 말했다. 이것은 그것을하는 방법에 대한 나의 대략적인 추측 이었지만, 나는 그것을 컴파일하려고하는 많은 오류를 얻는다. dat 파일의 단어를 문자열 배열로 가져 오는 방법은 무엇입니까? 당신이 한 줄에 하나의 단어를 가지고 있기 때문에파일을 읽고 문자열 배열에 저장하십시오.

COW 
SCHOOL 
KEY 
COMPUTER 

내 기능 words.dat 지금까지

#include <string> 
#include <fsteam> 
using namespace std; 

bool initializeFile(string filename){ 
    int importWord = 0; 
    string words[100]; 

    ifstream input; 
    input.open(filename, 'r'); 
    if(input.fails){ 
     return false; 
    }   
    /* 
    Tring to make for loop that runs through 
    all the characters in input(dat file) and 
    store them into the words array. if the character isn't a letter it 
    skips it and continues to the next row 
    */ 

    for(int i=0;i< input.length();i++){ 
     if(input[i] =="\n"){ 
      importWord++; 
     } 
     if(input[i] != "\n"){ 
      words[importWord]=input[i]; 
     } 
    } 

    return true; 
} 
+0

'std :: vector' 타입에 익숙합니까? 아마도 원시 C++ 배열보다 더 나은 도구 일 것입니다. – templatetypedef

+0

['std :: ifstream'] (http://en.cppreference.com/w/cpp/io/basic_ifstream)이나 그것의 기지가 없기 때문에 C++로 파일에 관한 튜토리얼을 찾아야합니다. 'length' 멤버 함수이거나 그것으로부터 읽는 것과 같이 사용됩니다. 아마도 [읽어야 할 몇 권의 좋은 초보자 책들도있다] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)? –

+0

그리고 [std :: getline'] (http://en.cppreference.com/w/cpp/string/basic_string/getline) 함수에 대해 알고 싶습니까? –

답변

0

, 당신은 낱말 읽기 std::getline를 사용할 수 있습니다. 당신이 break 문을 포함하는 경우

const int MAXIMUM_WORDS = 100; 
std::string words[MAXIMUM_WORDS]; 
std::string word_from_file = 0; 
int word_count = 0; 
while (std::getline(word_file, word_from_file)) 
{ 
    if (word_count > MAXIMUM_WORDS) 
    { 
    break; 
    } 
    words[word_count] = word_from_file; 
    ++word_count; 
} 

, 당신은 다중 조건을 사용할 수 있습니다

while ((word_count < MAXIMUM_WORDS) && (std::getline(word_file, word_from_file)) 

위의 코드는 당신의 번거 로움을 제거하여 main 기능에 코드를 넣을 수있는 정도로 작은 배열을 입력 함수에 전달합니다.

관련 문제