Einlesen von numerischen Werten



  • Hi zusammen,

    kann mir jemand helfen, ich möchte die Werte einer Datei als Vektor einlesen.
    Bsp.

    '1.7037@1.73836@0.5236378@....' <-- nach dem Format ist jede Datei aufgebaut. Es beginnt immer mit einem ' und endet auch damit. Der Seperator ist ein @.

    Was ich jetzt gerne hätte wäre ein Vektor<double> mit den Werten in der Datei.

    Hoffe mein Problem nicht zu kompliziert erklärt zu haben.

    Danke schonmal im voraus.



  • Geht bestimmt auch weniger arbeitsintensiv, aber wenn du das
    einmal gemacht hast, kannst du es: 😉
    http://www.gabi-soft.fr/articles/fltrsbf1.html

    Du kannst deinen eigenen Streambuffer schreiben, der dann
    immer bis zum nächsten @ ausliest.

    Alternativ könntest du auch den String jeweils parsen,
    und mittels find die @ filtern.

    Devil



  • die "Zauberfunktion" die das parsen für dich übernimmt heisst strtok...
    damit sollte es dir ein leichtes sein die werte in den vector zu ballern...



  • Eigentlich bin ich ja kein Fan davon, fertige Lösungen zu posten, aber bei den beiden ersten Vorschlägen will ich doch mal zu einer naheliegenderen Lösung raten:

    #include <fstream>
    
    ...
    
    std::fstream stream("deinedatei");
    if (stream.get() == '\'')
    {
        for (;;)
        {
            double d;
            if (!(stream >> d))
                break;
    
            meinVector.push_back(d);
    
            char ch;
            if (!(stream >> ch) || ch != '@')
                break;
        }
    }
    else ; // Datei beginnt gar nicht erst mit einem '
    

    Mehr Fehlerüberprüfungen können natürlich auch noch rein, wenn nötig. Und wenn ich das Format falsch verstanden habe und du mehrere durch '' getrennte Sequenzen hast, solltest du auch das leicht einbauen können 😉


Anmelden zum Antworten