Binary File wird falsch eingelesen

Hallo Forum!

Ich lese mit hilfe eines ifstream eine Binaerdatei byteweise ein, aber aus irgendeinem Grund liest meine Funktion nicht alle Bytes korrekt ein.
An was koennte das liegen?
Kann ifstream.get() durch Steuerzeichen wie ‚CR‘ oder so durcheinandergebracht werden?
Kann es an meinem File liegen?

Danke fuer Antworten,

Christof

Hi Christof,

das kann viele Gruende haben, aber die Vermutung das falsch eingelesen wird ist sehr wahrscheinlich. Das wird mal als 1 Zeichen oder als 2 Zeichen abgelegt, je nachdem welche Platform etc. Abhilfe schafft dabei u.U. die Datei im Binaer-Modus zu oeffnen mittels:

ifstream ifs("dateiname",ios\_base::binary);

Falls Du sie schon im Binaer-Modus geoeffnet hast, versuch es mal ohne, im Binaer-Modus besteht das aus nur 1 Zeichen, ansonsten aus 2 Zeichen. Prinzipiell musst Du das Format der Binaer-Datei exakt kennen. Auch wie z.B. Zahlen abgelegt wurden, soll heissen, ist eine Ganzzahl als int oder als long, bzw. eine reele Zahl als double bzw. float gespeichert worden. Genauso musst Du sie dann einlesen, da sich die Binaer-Laenge von double und float bzw. von int und long unterscheiden. Du kannst auch mal versuchen mittels:

ofstream ofs("anderer\_dateiname");

ofs

die gesamte eingelesene Datei in eine andere zu schreiben. Dann vergleichst Du einfach die Dateien und stellst fest, ab welchen 'Zeichen' sie sich unterscheiden bzw. der Fehler auftritt. Sollte die erste Zeile korrekt wieder gegeben sein, die 2. aber nicht meht, liegt es am .

Gruss Rolf