Werte beim Einlesen aus Stream ignorieren



  • Hallo,

    kleine blöde Frage: Angenommen, in einer Datei stehen viele Werte und mich interessiert nur jeder dritte, wie mache ich das am elegantesten?

    ifstream datei("foo.txt");
    
    while (noch_nicht_am_Dateiende)
    {
        double interessanter_wert;
        double dummy;
    
        datei >> dummy;
        datei >> dummy;
        datei >> interessanter_wert;
    
        do_something(interessanter_wert);
    }
    

    Nun würde ich aber natürlich viel lieber so was schreiben:

    ifstream datei("foo.txt");
    
    while (noch_nicht_am_Dateiende)
    {
        double interessanter_wert;
    
        datei.ignore_next_n_values(2); // <-- Gibt's so eine Funktion in der Standardlib?
        datei >> interessanter_wert;
    
        do_something(interessanter_wert);
    }
    

    Die "normale" ignore() -Funktion der istreams scheint mir nicht weiterzuhelfen... Jemand eine Idee? 🙂

    mfg



  • Na ja, du könntest eine istream_iterator verwenden und ihn zweimal inkrementieren ohne zu dereferenzieren. Das entspräche wohl dem Überspringen von zwei Werten.


Anmelden zum Antworten