2016-04-08 6 views
0

Ich arbeite an einem Textprozessor, der Text aus einer Datei aufnimmt und in eine Graph-Datenstruktur einfügt. Ich habe den Graph erstellt, aber ich habe Probleme mit dem Textprozessor. Wann immer ich den Code ausführe, heißt es, dass ich die Datei nicht öffnen kann. Ich stellte sicher, dass die Textdatei im selben Verzeichnis war, als ich den Code ausführte. Hier ist der Code für die GraphTextProcessor Klasse:Probleme beim Öffnen einer Textdatei mit ifstream in C++

#include <fstream> 
#include <cstring> 
#include <string> 
#include "Graph.h" 

class GraphTextProcessor { 
    private: 
     Graph* m_data; 

    public: 
     GraphTextProcessor(); 
     Graph* process(std::string filename); 
}; 

GraphTextProcessor::GraphTextProcessor() { 
} 

Graph* GraphTextProcessor::process(std::string filename) { 
    //process text file and insert into graph here 

    std::string word; 

    //opens file in read mode 
    std::ifstream readFile; 
    readFile.open(filename.c_str(), std::ios::in); 

    if (readFile.is_open()) { //Not opening 
     while (readFile >> word) { 
      std::cout << word << std::endl; 
     } 
     // Closes open text file 
     readFile.close(); 
    } 
    else { 
     std::cout << "Unable to open text file." << std::endl; 
    } 

    return NULL; 
} 

ich gerade versucht, von einer Datei zuerst zu lesen, bevor ich versuche tatsächlich auf die Grafik zu schreiben. Hier ist der Code, den ich in am Main läuft:

#include <iostream> 
#include <string> 
#include "GraphTextProcessor.h" 

int main() { 
    GraphTextProcessor *gp = new GraphTextProcessor(); 
    gp->process("hello.txt"); 
} 

Er druckt "Unable to open text file". Irgendwelche Vorschläge?

+2

Dies könnte helfen: [Wie Fehlermeldung erhalten, wenn ifstream nicht öffnen] (http://stackoverflow.com/a/17338934/669576) –

+2

Sie könnte es nützlich finden Ihre '" Kann nicht öffnen müssen ... "' print 'filename' und das aktuelle Arbeitsverzeichnis, da wird nach der Datei gesucht. Wenn Sie Ihr Programm von einer IDE ausführen, ist es möglicherweise nicht dort, wo Sie es erwarten. –

Antwort

0

Ich lief den Code selbst und es funktioniert gut. Listen Sie Ihre Programmierumgebung auf und welche Schritte sind Sie gefolgt. Bitte stellen Sie Ihre Frage ausführlicher und erklären Sie genau, was Sie versucht haben, damit es funktioniert.

Bitte stellen Sie sicher, dass die folgenden Schritte aus:

  1. Versuchen Sie den vollständigen Pfadnamen verwendet; beispielsweise

ifstream in("C:/someDirectory/andSomeOtherDirectory/one.txt");

  1. Versuchen Sie die Schreibweise der Datei zu ändern.

Zum Beispiel:

"One.txt"

oder

"ONE.txt"

  1. Sie Erlaubnis benötigen, die Datei zu lesen. Versuchen Sie, die Berechtigung der Datei zu ändern.

  2. Probieren Sie verschiedene Compiler

  3. Auch wenn Sie Ausnahme verwenden Handling (versuchen, werfen, fangen) statt, wenn, sonst, das den Fehler zu finden helfen.