2017-12-02 7 views
-1

그래서; 행맨 게임을 만들려고 노력 중이고, 인터넷에서 다운로드 한 .txt 파일에서 단어를 가져오고 싶습니다. 약 4900 단어로 각기 다른 줄에 있습니다. 파일을 읽으려고하는데, 프로그램이 매번 오류 (1)로 종료합니다. 즉, 파일이 없습니다. 난 절대 경로를 사용하여 노력하고 또한 작업 디렉토리에 파일을 배치하고 상대 경로를 사용하지만, 같은 오류가 발생할 때마다. 누구든지 모양을 가지고 무엇이 잘못 됐는지 말해 줄 수 있습니까? 저는 C++을 처음 접했으므로 Java로 배우기 시작했고 지금은 새로운 것을 시도하고 싶습니다. 따라서 코드 구조에 실수가 있는지 확실하지 않습니다. 감사합니다.어떻게 텍스트 파일을 읽고 C++의 모든 줄에서 문자열을 얻을 수 있습니까?

#include "stdafx.h" 
#include <iostream> 
#include <stdio.h> 
#include <vector> 
#include <fstream> 
#include <string> 
#include <algorithm> 
using namespace std; 

vector<string> GetWords(){ 
    ifstream readLine; 
    string currentWord; 
    vector<string> wordList; 

    readLine.open("nounlist.txt"); 

    while (getline(readLine, currentWord)) { 
     wordList.push_back(currentWord); 
    } 


    if (!readLine) { 
     cerr << "Unable to open text file"; 
     exit(1); 
    } 
    return wordList; 
} 
+3

더 - 문이 경우 항상 readline에가, 마지막에 후 확인됩니다이 오류 항상 출력거야 그래서. 그게 당신이 의미 한 것입니다. 그렇지 않으면, 나는 이것을 시도 할 때 어떤 에러도 내지 않는다. 제대로 읽힌다. –

+2

@Jack of Blades가 맞다. while (! readLine) ... '을 while 루프 위로 옮긴다. –

+1

그래, 모든 데이터를 읽은 후에 파일이 제대로 열렸는지 확인하지 않습니다. 그것을 열려고 시도하자마자 바로 그 일을하는 것이 가장 좋습니다. – Galik

답변

2

모든 데이터를 읽은 후 readLine을 확인했습니다. 다음 코드를 사용할 수 있습니다 :

if (readLine.is_open()) { 
    while (getline(readLine, currentWord)) { 
     wordList.push_back(currentWord); 
    } 
    readLine.close(); 
} else { 
    cerr << "Unable to open text file"; 
    exit(1); 
} 

is_open 함수는 readLine이 파일과 연결되어 있는지 확인하는 것입니다.

0

사용이 코드,

std::ifstream readLine("nounlist.txt", std::ifstream::in); 
if (readLine.good()) 
{ 
    while (getline(readLine, currentWord)) 
    { 
     wordList.push_back(currentWord); 
    } 
}