Datei einlesen



  • Hallo
    Ich versuche zurzeit eine Datei einzulesen und aus dieser dann Zahlen zu extrahieren.
    Habe mit der suchfunktion istringstream gefunden und denke es eigentlich verstanden zu haben, leider krieg ich es nicht ganz auf mein Problem übertragen.
    Meine Zeilen haben das Format:

    Stop6: m = 0.127879 +/- 7.01054e-05     b = -8.93128 +/- 0.0525162
    

    aus diesen möchte ich den Namen, d.h. Stop6 sowie die 2 Werte für m und b und deren Fehler auslesen.
    Das einlesen der Zeile mit file.getline(line) funktioniert soweit.
    danach mach ich folgendes

    istringstream iss;
      iss >> skipws; 
     file.getline(linie);
     iss.clear();
     iss.str(line);
     char s1[12];
     iss>>s1 >> m>>e_m>>b>>e_b;
    

    Was ist mein Fehler dabei?
    Viele Grüße
    Felix



  • Mach daraus mal ein Minimalbeispiel. Hier fehlen z.B Angaben über die Typen, die du einliest, ohne die man nicht sagen kann, was überhaupt passiert.

    Und ebenfalls solltest uns noch sagen, was du erwartest, dass passiert.

    Der >>-Operator liest einfach den Typen ein, den du angibst (also auf das >> folgt). Und das kann ein String (bis zu einem Whitespace) sein, eine Zahl (Fliesskomma oder ganz) oder sogar eigene Typen, welche komplett etwas anderes einelesen.



  • Wenn du das mit dem >>-Operator einliest wird ja immer bei einem Leerzeichen getrennt. Jetzt musst du alles zwischen einem Leerzeichen seperat einlesen. Du hast:

    Stop6: m = 0.127879 +/- 7.01054e-05 b = -8.93128 +/- 0.0525162

    Dabei ist
    -Stop6: ein string
    -m ein string
    -= ein string
    -0.127879 ein double
    -+/- ein string
    -jetzt hab ich keine lust mehr ^^. ich denke es ist klar was du machen musst

    iss >> stopString >> tmp1 >> tmp2 >> mValue >> tmp3 >> mRange >> tmp4 >> ...

    und so weiter.


Anmelden zum Antworten