2017-12-02 15 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); 
    } 
} 
関連する問題