Daten aus File einlesen



  • Hi,

    ich versuche gerade Daten aus einem Textfile der Form:

    abc= 25 bcd= 28 def= 30
    abc= 125 bcd= 22 def= 1

    einzulesen. Meine Idee war es nun, dass ich ans Ende von Hand eine -42 setze (damit ich abfragen kann, wo das File zu Ende ist) und das ganze dann so aufbaue:

    ifstream einlesen;
      einlesen.open("daten.txt");
      while(eingelesen!=-42){
        einlesen >> eingelesen;
        cout << eingelesen; //Testausgabe
        if(eingelesen=='abc'){
          einlesen >> eingelesen;
          cout << "abc = " << eingelesen;
        }
        else if(eingelesen=='bcd'){
          einlesen >> eingelesen;
          cout << "bcd = " << eingelesen;
        }
      }
      einlesen.close();
    

    Wollte es jetzt erstmal nur ausgeben lassen, später speiche rich das dann in Vektoren. Mein Problem ist nur, dass immer nur die erste Zahl eingelesen wird und das immer und immer wieder (also es ne Endlosschleife gibt).

    Was mache ich falsch?

    Liebe Grüße
    Lucrecia


  • Mod

    Doofe Idee. Wenn du bis zum Ende lesen willst, dann lies doch bis Ende, nicht bis -42. Denn wenn du nach -42 suchst, musst du schließlich auch aufpassen, ob du nicht ins Ende rennst. Also einfach auf Ende prüfen. Und deine Vergleiche sind auch falsch. So geht man nicht mit Zeichenketten um. Guck mal z.B. so:

    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
      ifstream in("test.dat");
      string key;
      int value;
      while (in >> key >> value)
        {
          if (key == "abc=")
            cout << "Gelesen: abc = " << value << '\n';
          if (key == "bcd=")
            cout << "Gelesen: bcd = " << value << '\n';
        }
    }
    


  • thx


Anmelden zum Antworten