getline



  • hallo.
    ich bin c++ anfaenger und mochte eine text datei parsen.
    ich moechte die datei einlesen und pruefen ob die Zeile ein = Zeichen
    enthaelt und alles hinter dem istgleich soll dann rausgenommen werden.
    Wenn die Zeile mit einem [ beginnt soll eine andere funktion ausgefuehrt
    werden. usw.

    Ich habe mir das so vorgestellt, dass immer eine Zeile mit getline gelesen
    wird; die Zeile als string a gespeichert wird und ich dann mit diesm String
    weiterarbeite.

    ifstream in("file.txt");
            getline(in,a,'\n');
            char ch = a[0]; 
            if (ch=='[') {
            cout << "Beginng mit [" << endl;
            ....
    

    das funktioniert wunderbar.(weiss allerdings nicht ob es
    programmiertechnisch in ordnung ist)

    Aber wie gehe ich vor um die naechste Zeile einzulesen.
    Ich wuerde gerne alle i Zeilen, zeilenweise einlesen und jede Zeile dann als
    string speichern.

    vielleicht kann mir jemand von euch weiterhelfen.
    gibt es eine gute dokumentation zu arbeiten mit strings bzw. getline.

    danke
    lg
    Michi



  • Bau Dir doch eine Schleife:

    ifstream in("file.txt");
    if(in.is_open())
    {
         while(!in.eof())
         {
             getline(in, a, '\n');
             doSomething();   //hier kannst Du die eingelesene Zeile dann bearbeiten
         }
    }
    


  • danke.
    stimmt so funktioniert es.
    Warum bin ich da nicht selber drauf gekommen.

    wofuer ist eigentlich gut?

    (in.is_open())
    

    lg
    michi



  • vielleicht um zu gucken, ob die Datei wirklich offen ist?!

    Warum bin ich da nicht selber drauf gekommen.



  • Das prüft ob die Datei wirklich offen ist oder vielleicht ein Fehler aufgetreten ist.


Anmelden zum Antworten