Die Funktion seekg () schlägt fehl

Ich versuche, einen einfachen Code zu schreiben, der eine Textdatei liest, aber die erste Zeile zweimal liest. Ich dachte, das wäre so einfach wie so etwas

    std::ifstream file;
    file.open("filename", std::ios_base::in);
    std::string line;
    std::getline(file, line);
    // process line
    file.seekg(0, ios::beg);

    while (std::getline(file, line))
    {
        // process line
    }

Der Suchvorgang muss jedoch fehlschlagen, da die erste Zeile nicht zweimal verarbeitet wird. Irgendeine Idee warum?

BITTE BEACHTEN SIE: Dies ist nicht das Problem, mit dem ich konfrontiert bin, sondern eine vereinfachte Version davon, um nicht mehrere Klassen Code und mehrere Funktionen einfügen zu müssen. Das eigentliche Problem besteht darin, dass ein Dateizeiger an mehrere Funktionen in mehreren Klassen übergeben wird. Die erste Funktion kann aufgerufen werden oder nicht und liest die erste Zeile der Datei. Die zweite Funktion liest die gesamte Datei, muss aber zuerst seekg aufrufen, um sicherzustellen, dass wir am Anfang der Datei stehen.

Ich habe gerade den obigen Code verwendet, um die Diskussion zu vereinfachen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage