Zeilen innerhalb von Textdateien...
-
Hallo.
Ich stehe zwei Problemen.1. Ich muss herausfinden, wenn ich eine Textdatei habe, wie viele Zeilen diese hat.
Ich habe schon überlegt, dass ich die Textdatei in einen String einlese und dann die Anzahl der Zeilenumbrüche zähle, aber dies erscheint mir zu langsam bei einer riesigen Textdatei. Kann man das auch ganz einfach hinbekommen?2. Wie kann ich an den Anfang einer beliebigen Zeile springen??? Also ich meine z.B. den Positionszeiger zum lesen.
Gruß Speedy_92
-
1. kannst es ja so machen,Zeile für zeile mit getline einlesen und dann jeweils die zeichen der zeile bestimmen, dann nimmste die nächste zeile und addierst sie auf die alten zeichen drauf, und das machste solange wie eingelesen wird
2. in einer Textdatei kannst du nicht zu einer bestimmten zeile springen, dazu müsstest du die datei binär bearbeiten
-
1. Danke
2. Wieso nicht? Ich dachte das geht mit den Seek-Funktionen

*EDIT Sry was falsches gelesen xDWie kann man das denn binär machen? Gibt es dort extra Funktionen für?
-
schon, dann musst du sie aber binär bearbeite, dann haut das auch hin

-
Wie kann man das denn binär machen? Gibt es dort extra Funktionen für das Cursersetzen auf Zeilenanfang??
-
Das musst du beim öffnen angeben mit einem Flag.
-
Alles klar. Vielen dank.
-
Er schrieb: Textdatei.
Also:
fp = fopen( ...);
for ( i=0; fgets( ...); i++);
fclose( fp);
printf( "Juchhu, ich habe %d Zeilen", i);
-
Scheppertreiber schrieb:
Er schrieb: Textdatei.
Also:
fp = fopen( ...);
for ( i=0; fgets( ...); i++);
fclose( fp);
printf( "Juchhu, ich habe %d Zeilen", i);Tut mir leid, aber ich steige überhaupt nicht durch den Code

Und noch eine Frage:
Ich habe mir jetzt die Flags angeschaut, aber irgendwie weiß ich nicht welche ich dafür benutzen muss wegen den Zeilenanfängen... Vielleicht ios_base::unitbuf???
-
Speedy_92 schrieb:
1. Ich muss herausfinden, wenn ich eine Textdatei habe, wie viele Zeilen diese hat.
Hallo Speedy_92,
das mit dem Zeilen zählen hatten wir schon mal.
Springen an eine bestimmte Stelle (z.B. Zeilenanfang) geht mit C++-Mitteln nur, wenn Du vorher schon bis dahin gelesen hast und Dir die Stelle jedesmal mit tellg() merkst.
Gruß
Werner
-
Speedy_92 schrieb:
1. Ich muss herausfinden, wenn ich eine Textdatei habe, wie viele Zeilen diese hat.
Hallo Speedy_92,
das mit dem Zeilen zählen hatten wir schon mal.
Springen an eine bestimmte Stelle (z.B. Zeilenanfang) geht mit C++-Mitteln nur, wenn Du vorher schon bis dahin gelesen hast und Dir die Stelle jedesmal mit tellg() merkst.
Gruß
Werner