Problem beim bearbeiten von Binärdateien
-
Hi Leute,
ich habe mir mal zum testen eine Funktion geschrieben, die eine Binärdatei lesen soll. Nur leider wird nicht die gesamte Datei gelesen, sondern es fehlen einige Zeichen.
hier mal der Codebool read_file(char *filename, std::list<char> &datei) { char ch; int cnt=0; ifstream ifs(filename, ios::binary); ofstream ofs("output.txt", ios::binary); if (!ifs) return false; if (!ofs) return false; while(!ifs.eof()) { ifs>>ch; cnt++; //cout<<ch; ofs<<ch; }; ifs.close(); return true; }Die zulesende Datei ist 71667 Byte groß und die Ausgabe nur 70709 Byte. Irgendwie werden einige Zeichen falsch interpretiert und weggelassen.
hier mal ein Beispiel aus der Datei(HEX-Werte):Original
42 BF 0B 0A 01 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 1B 00 00 00 00 00 00 00Ausgabe
42 BF 01 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 1B 00 00 00 00 00 00 00 00 00Wie man sieht, werden gleich in der ersten Zeile die beiden Werte 0B 0A nich gelesen.
Falls jemand eine Idee hat wo der Fehler liegt, außer zwischen meinen Ohren, bin ich über jede antwort froh.
-
Wenn du binär liest, solltest du nicht den operator>> verwenden, sondern lieber get().
-
Danke, funktioniert wunderbar.
Nur wird jetzt ein Byte mehr gelesen als vorhanden ist.
-
Das liegt an deinem eof-Test. Der eof-Zustand wird gesetzt, sobald versucht wurde, über das Ende der Datei hinaus zu lesen, nicht schon vorher.
-
-
Ok, alles klar.
DANKE