Seite 1 von 1

C++ Äuquivalent zu fread

Verfasst: Fr Jun 26, 2009 6:23 pm
von nufan
Tag :)
Ich bräuchte eine C++-Funktion mit der ich Daten aus einer binären Datei lesen kann. Die Zeichen werden von Unicode (Uint16) auf 2 unsigned chars umgerechnet und dann mit dem <<-Operator byteweise in die Datei geschrieben. Herausgelesen wird (mit fread) auf ein Mal. Die Zeichen können jedoch auch Leerzeichen sein. Da der >>-Operator anscheinend einen String annimmt bricht er bei dem Leerzeichen ab und ich bekomme falsche Zeichen (was nicht an der Rückrechnung liegt). Ich hab jetzt beim Schreiben einen fstream und beim Lesen einen stdio-FILE-Pointer. Ich hätt aber gern beides als fstream.
Gibt es eine C++-Funktion mit der ich unsigned chars einer bestimmten Länge lesen kann? Ähnlich wie fread. Also ohne Abbrechen nach Whitespace-Zeichen. get hab ich schon versucht aber damit gehen nur chars und streambufs (was immer das sind...).

Lg

Re: C++ Äuquivalent zu fread

Verfasst: Fr Jun 26, 2009 6:56 pm
von Kerli
dani93 hat geschrieben:Ich bräuchte eine C++-Funktion mit der ich Daten aus einer binären Datei lesen kann.
Weißt du denn das Streams auch Memberfunktionen haben? read wäre glaub ich ganz gut geeignet...

Re: C++ Äuquivalent zu fread

Verfasst: Fr Jun 26, 2009 7:06 pm
von nufan
Kerli hat geschrieben:Weißt du denn das Streams auch Memberfunktionen haben?
Sonst hätte ich wohl schlecht get ausprobiert :)
Kerli hat geschrieben:read wäre glaub ich ganz gut geeignet...
Naja... es funktioniert mit einem Cast von unsigned char * auf char *. Welches ist jetzt die unschönere Methode: C und C++ Streams verwenden oder casten? ;)

Re: C++ Äuquivalent zu fread

Verfasst: Fr Jun 26, 2009 8:17 pm
von Kerli
dani93 hat geschrieben:Sonst hätte ich wohl schlecht get ausprobiert :)
Stimmt auch wieder :P
dani93 hat geschrieben:Naja... es funktioniert mit einem Cast von unsigned char * auf char *. Welches ist jetzt die unschönere Methode: C und C++ Streams verwenden oder casten? ;)
Ersteres :)

Ich würde read verwenden und dann eben casten. Es ist ja nicht so das casten so "böse" ist, zumindest nicht solange man es richtig und gezielt einsetzt. Und das auslesen bzw. auswerten von binären Daten würde ich auf jeden Fall ein cast verwenden. Außerdem würdest du ja bei C-Streams auch nichts anderes machen, auch wenn dort der "cast" nicht so offensichtlich ist.

Re: C++ Äuquivalent zu fread

Verfasst: Fr Jun 26, 2009 9:42 pm
von nufan
Kerli hat geschrieben:
dani93 hat geschrieben:Naja... es funktioniert mit einem Cast von unsigned char * auf char *. Welches ist jetzt die unschönere Methode: C und C++ Streams verwenden oder casten? ;)
Ersteres :)

Ich würde read verwenden und dann eben casten. Es ist ja nicht so das casten so "böse" ist, zumindest nicht solange man es richtig und gezielt einsetzt. Und das auslesen bzw. auswerten von binären Daten würde ich auf jeden Fall ein cast verwenden. Außerdem würdest du ja bei C-Streams auch nichts anderes machen, auch wenn dort der "cast" nicht so offensichtlich ist.
OK dann bleibe ich beim Cast mit dem fstream. Danke für die Info :)