Hey Leute,
ich schreibe gerade etwas um in einer CSV Datei einen Zeitstempel
schneller zu finden und ab dort auszulesen. Statt mehrere GB Dateien nur
per std::getline zu iterieren um an den Punkt zu kommen will ich per
file.seekg() große Sprünge machen um mich schneller dem Ziel zu nähern.
Bei std::getline wird immer eine Zeile weitergesprungen aber bei seekg
eine bestimmte anzahl an Zeichen, sodass ich erst den Beginn einer Zeile
finden muss um dann wieder eine Zeile auszulesen.
1 | // springe großen Abstand nach vorne:
|
2 | file.seekg(Zeichensprungwert,std::ios_base::cur)
|
3 |
|
4 | // springe solange ein Zeichen weiter bis man wieder am Anfang einer Zeile ist:
|
5 | char ch;
|
6 | while(ch != '\n')
|
7 | {
|
8 | file.get(ch); // Springt ein Zeichen vor
|
9 | }
|
10 | file.get(ch);
|
11 |
|
12 | // Ab hier soll std::getline wieder normal auslesbar sein.
|
Das Problem ist, dass es nicht funktioniert, es bleibt irgendwie in der
while-Schleife stecken. Hat jemand eine Idee woran das liegt?
Grüße