2 mal hintereinander getline() geht nicht



  • Hi ich habe ein Problem und zwar soll es immer 2 Zeilen auslesen die jeweils in float umwandeln und dann wieder 2 auslesen aber immer nur die erste Zeile wird richtig ausgelesen ab der 2ten kommen irgendwelche Zahlen raus. Wieso ist das so, kann man nicht 2 mal hintereinander getline() benutzen??
    Ich hoffe jemand kann mir helfen
    mfg

    fstream Map;
          Map.open("Maps/Level1.map",ios::in);
          while (!Map.eof())          // Solange noch Daten vorliegen
        {
            getline(Map, c);        // Lese eine Zeile
             sstr<<c;
             sstr>>objekt[Obj];     //Objekt auslesen
    
              getline(Map, c);        // Lese eine Zeile
               sstr<<c;
               sstr>>textur[Obj];      //textur auslesen
    
    Obj++
     }
          Map.close();
    


  • warum überprüfst du nicht, was im str steht und gibst ihn dann passend weiter? wenn du wissen willst warum das ganze nicht ganz gut funktioniert, dann probier mal eine datei wie:
    1
    2
    3
    4
    5
    6
    ...

    auszulesen und dir das mal bei jedem aufruf anzeigen zu lassen. wahrscheinlich rutscht der zähler mit jedem getline eins weiter und du kommst deshalb nicht ganz passende daten.



  • Das habe ich schon gemacht also ich habe in der Textdatei
    0
    1
    0
    1.0
    0.0
    stehen die erste 0 Wird richtig gelesen bei den nächsten Zeilen kommt sowas raus
    2.8026e-045
    3.66793e-039
    mfg Fabi



  • Hast du dir mal zwischendurch angesehen, wo genau die Werte zerschossen wurden? (gib dazu doch einmal die Daten aus, die due eingelesen hast - und der Vollständigkeit halber auch die Rückgaben von sstr.str() und sstr.rdstate())

    (ich würde ja spontan vermuten, daß du versehentlich ein Fehlerflag in deinem Stringstream gesetzt hast und darum keine brauchbaren Werte mehr erhältst)



  • Welchen Typ hat c in deinem Beispiel überhaupt?



  • stringstream sstr;
    string c;

    Hi also ich weiß jetzt wo der wert "zerschossen" wird und zwar wenn ich

    sstr>>objekt[Obj]; //Objekt auslesen

    sstr in objekt[Obj]; einlesen will geht das nicht in sstr steht noch das richtige aber in objekt nicht mehr weiß jemand an was das liegen könnt?

    mfg



  • Benutz mal "sstr.str(c)" statt "sstr<<c".


Anmelden zum Antworten