Letzte Zeile einer Datei?

Hallo

Ich bin auf Heute den Kopf gefallen. Wie lese ich am besten die letzte Zeile einer Datei aus?.

ich bis jetzt:

std::fstream file;
file.open(asFilename.c\_str(), std::ios::binary|std::ios::in);

if (!file){
 std::cerr 

Und ab jetzt stehe ich auf dem Schlauch.

Grüße Sven

Hallo Sven,

Ich bin auf Heute den Kopf gefallen. Wie lese ich am besten
die letzte Zeile einer Datei aus?.

Zeilenweise alles einlesen, bis EOF kommt, der Zugriff davor war dann die letzte Zeile.

MfG Peter(TOO)

Hallo Peter

danke für deine Hilfe.

Das Problem ist das die Datei ca 120 MB groß ist. Wenn ich da alle Zeilen durchlaufe benötige ich zu viel Zeit. Da ich die länge der letzten Zeile kenne habe ich jetzt folgende Lsg.

std::fstream file;
file.open(asFilename.c\_str(), std::ios::binary|std::ios::in);

if (!file){
 std::cerr 

Vielleicht kenn ja jemand noch eine schnellere Lsg.

Grüße Sven




> > Ich bin auf Heute den Kopf gefallen. Wie lese ich am besten  
> > die letzte Zeile einer Datei aus?.
> 
>   
> Zeilenweise alles einlesen, bis EOF kommt, der Zugriff  
> **davor** war dann die letzte Zeile.  
>   
> MfG Peter(TOO)

Hallo Sven,

Das Problem ist das die Datei ca 120 MB groß ist. Wenn ich da
alle Zeilen durchlaufe benötige ich zu viel Zeit. Da ich die
länge der letzten Zeile kenne habe ich jetzt folgende Lsg.

Naja, auf eine allgemein gehaltene Frage gibts halt nur einen allgemeingültigen Algorithmus …

Schneller als seek(dateiende - zeilenlänge) geht es nicht.

MfG Peter(TOO)

Hallo Peter

danke für deine Hilfe.

Das Problem ist das die Datei ca 120 MB groß ist. Wenn ich da
alle Zeilen durchlaufe benötige ich zu viel Zeit. Da ich die
länge der letzten Zeile kenne habe ich jetzt folgende Lsg.

std::fstream file;
file.open(asFilename.c_str(), std::ios::binary|std::ios::in);

if (!file){
std::cerr

Vielleicht kenn ja jemand noch eine schnellere Lsg.

Grüße Sven

Ich denke, das ist schon die schnellste Loesung.
Aber besonders sicher ist sie nicht:
1)
Eine Textdatei sollte nicht im Binärmodus geöffnet werden, es sei denn du kümmerst dich um die Interpretation der Zeilenenden (’\n’) selbst.
2)
Ich wuerde nicht darauf vertrauen, die Länge der letzten Zeile zu kennen.
Also sicherheitshalber eine vernünftige Funktion schreiben, die von hinten her nach der letzten Zeile sucht. Das ist bestimmt noch schnell genug, und die Funktion kann zudem wiederverwendet werden, wenn du die letzte Zeile mal fuer etwas anderes brauchst.

Markus.

Hallo Markus.

danke für deine Hinweise.

Ich muss die datei Binär öffnen da ich nicht darstellbare zeichen in der Datei stehen.->Fontcodierung,Bilder. Diese haben leider auch Steuerzeichen als Kombinationen. Deshalb muss ich die Datei-Binäre öffnen. Und ja ich kümmere mich um die Interpretationen der Zeilenenden. (Habe bereits meine Erahrungen gemacht mit einer PDF-Geschichte. Da ist es nämlich auch noch abhängig vom Betriebssystem und auch vom jeweiligen ERP-Programm.)

Als weiteres weiß ich genau was am Ende der Datei steht. Ich lege diese mitholfe von einem Gawk-skript an. Dieses Script interpretiert eine Ascii-ausgabe einer batchdatei.

Ich werde die Funktion auf jedenfall schreiben. Da ich sie auch wiederverwenden will. Werde mich noch oft genug mit Dateistrukturen rumschlagen. (vorher PDF, jetzt PS, später OTF, danach PCL)

Grüße Sven

Ich denke, das ist schon die schnellste Loesung.
Aber besonders sicher ist sie nicht:
1)
Eine Textdatei sollte nicht im Binärmodus geöffnet werden, es
sei denn du kümmerst dich um die Interpretation der
Zeilenenden (’\n’) selbst.
2)
Ich wuerde nicht darauf vertrauen, die Länge der letzten Zeile
zu kennen.
Also sicherheitshalber eine vernünftige Funktion schreiben,
die von hinten her nach der letzten Zeile sucht. Das ist
bestimmt noch schnell genug, und die Funktion kann zudem
wiederverwendet werden, wenn du die letzte Zeile mal fuer
etwas anderes brauchst.

Markus.