Problemen beim dateieinlesen



  • Aber die Datei ist ja eigentlich gar nicht leer.

    In der ersten Zeile steht
    #header

    Aber das steht zu keinem Zeitpunkt in meinem String.



  • Isainmexico schrieb:

    Aber die Datei ist ja eigentlich gar nicht leer.

    In der ersten Zeile steht
    #header

    Aber das steht zu keinem Zeitpunkt in meinem String.

    Das stimmt so nicht. Was genau daran nicht stimmt, kann man nicht sagen, du zeigst ja noch nicht einmal Originalcode. Benutze einen Debugger.



  • Ist die Datei denn im selben Verzeichnis wie das auszuführende Programm?



  • Ja die Datei ist im selben Verzeichnis.
    Ich habe das ganze schon mit dem debugger angesehen. Der String ist immer leer. Nachdem die Schleife einmal durchlaufen wurde, wird wegen eof abgebrochen.
    Die ifs Variable wird im debugger in viele Einzelteile aufgespalten wo ich jetzt nicht genau weiß was ich überprüfen muss.

    Den Code habe ich so 1:1 abgeschrieben. Kann gerne nochmal den Code mit richtiger Groß und Kleinschreibung Posten, wenn das hier zu Problemen führt.



  • Isainmexico schrieb:

    Den Code habe ich so 1:1 abgeschrieben.

    Vielleicht

    Isainmexico schrieb:

    Kann gerne nochmal den Code mit richtiger Groß und Kleinschreibung Posten, wenn das hier zu Problemen führt.

    Wenn er nicht kopiert ist, ist das witzlos.


  • Mod

    Benutz nicht deinen Code, sondern den von Belli. Guck damit im Debugger, ob die Schleife überhaupt betreten wird. Deine Interpretation

    Isainmexico schrieb:

    wird wegen eof abgebrochen.

    ist fast mit Sicherheit falsch. Das sieht vielleicht bei dir so aus, weil bei dir die Leselogik schlicht falsch ist, aber bei Bellis korrekter Logik würdest du sehen, ob überhaupt etwas aus der Datei gelesen wurde. Die wahrscheinlichste Ursache ist nämlich immer noch, dass die Datei gar nicht geöffnet werden konnte. Du kannst dir auch einmal direkt nach dem Öffnen, vor der Leseschleife, ifs.is_open() und/oder ifs.good() ausgeben lassen. Beide müssen wahr sein.



  • Ich habe mit direkt nach dem öffnen if (fail) ausgeben lassen. Das war immer falsch.



  • Aber ich werde es gleich mal mit dem anderen Code versuchen und melde mich dann nochmal. Schonmal vielen Dank. Ich werde auch versuchen das Verzeichnis noch direkt mit einzufügen.



  • So ich habe den Code jetzt wie hier beschrieben geändert.
    Der Debugger zeigt, dass die while schleife diesmal nicht einmal betreten wird.

    #include <fstream>
    #include <iostream>
    using namespace std;
    
    int main(int argc, char** argv) {
        cout << "-----------Programm wird gestartet-----------------" << endl;
        ifstream ifs("test.txt");
        if (!ifs.is_open()) {cerr << "error: Fehler beim Öffnen von test.txt" << endl; return 0;};
        string s;
        while (ifs >> s){
            cout << s << endl;
        }
        ifs.close();
        return 0;
    }
    

  • Mod

    Aber es wird nicht die Meldung bezüglich fehlerhaften Öffnens ausgegeben? Dann ist die Datei leer.



  • Vielleicht solltest du mal alle test.txt Dateien auf deinem Computer suchen.


Anmelden zum Antworten