Schnelle objektorientierte, kompilierende Programmiersprache.
-
nufan
- Wiki-Moderator
- Beiträge: 2558
- Registriert: Sa Jul 05, 2008 3:21 pm
Beitrag
von nufan » Fr Jun 26, 2009 6:23 pm
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
-
Kerli
- Beiträge: 1456
- Registriert: So Jul 06, 2008 10:17 am
- Wohnort: Österreich
-
Kontaktdaten:
Beitrag
von Kerli » Fr Jun 26, 2009 6:56 pm
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...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren:
http://www.tomprogs.at
-
nufan
- Wiki-Moderator
- Beiträge: 2558
- Registriert: Sa Jul 05, 2008 3:21 pm
Beitrag
von nufan » Fr Jun 26, 2009 7:06 pm
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?

-
Kerli
- Beiträge: 1456
- Registriert: So Jul 06, 2008 10:17 am
- Wohnort: Österreich
-
Kontaktdaten:
Beitrag
von Kerli » Fr Jun 26, 2009 8:17 pm
dani93 hat geschrieben:Sonst hätte ich wohl schlecht get ausprobiert
Stimmt auch wieder
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.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren:
http://www.tomprogs.at
-
nufan
- Wiki-Moderator
- Beiträge: 2558
- Registriert: Sa Jul 05, 2008 3:21 pm
Beitrag
von nufan » Fr Jun 26, 2009 9:42 pm
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
