2017-12-02 4 views
-1

Also; Ich versuche, eine Art Hangman-Spiel zu erstellen, und ich möchte die Wörter aus einer .txt-Datei, die ich aus dem Internet mit etwa 4900 Wörtern heruntergeladen habe, jedes in einer anderen Zeile. Ich versuche, die Datei zu lesen, aber das Programm wird jedes Mal mit dem Fehler (1) beendet, das ist keine Datei gefunden. Ich habe versucht, absoluten Pfad zu verwenden, und auch die Datei in das Arbeitsverzeichnis platziert und den relativen Pfad verwendet, aber jedes Mal bekomme ich den gleichen Fehler. Könnte jemand einen Blick darauf werfen und mir sagen, was damit nicht stimmt? Ich bin neu in C++, ich habe angefangen mit Java zu lernen und jetzt möchte ich etwas Neues ausprobieren, daher bin ich mir nicht sicher, ob es Fehler in der Struktur des Codes gibt. Danke allen!Wie kann ich eine Textdatei lesen und eine Zeichenfolge aus jeder Zeile in C++ abrufen?

#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

Die if-Anweisung wird immer geprüft werden, nachdem Readline- am Ende ist, so dass es dann immer Ausgang der Fehler auf. Wenn es das ist, was du meintest. Ansonsten bekomme ich keinen Fehler wenn ich das versuche, es liest die Zeilen richtig ein. –

+2

@Jack of Blades ist richtig, move 'if (! ReadLine) ...' über 'while' Schleife. –

+1

Ja, es gibt keinen Sinn zu überprüfen, ob die Datei * nach dem Lesen * aller Daten korrekt geöffnet wurde. Am besten sofort nach dem Versuch, es zu öffnen. – Galik

Antwort

2

Sie haben readLine nach dem Lesen aller Daten überprüft. Sie können den folgenden Code verwenden:

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 Funktion ist zu prüfen, ob readLine mit einer Datei verknüpft ist.

0

Verwenden Sie diesen Code,

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