ueberladen von ofstream
-
Hi,
ich habe folgendes Problem.
Habe mir selbst einen Bitmapheader geschrieben.
(ICh weiss es gibt schon einen)Jetzt wollte ich die Struktur mit einem Outstream an eine Datei uebergeben.
Leider hat der outstream meine Daten in Zeichenketten umgewandelt.
Sprich int wert 360000 belegt nicht 4 Byte sondern 6 ( 3 , 6, 0 ,0 ,0 ,0)
Hab das jetzt folgendermassen umgangenstd::ostream &operator<<(std::ostream &ostr, const PILLE_BITMAPHEADER &PiBi) { ostr << ((char*)&PiBi.mType)[0]; ostr << ((char*)&PiBi.mType)[1]; ostr << ((char*)&PiBi.mFilesize)[0]; ostr << ((char*)&PiBi.mFilesize)[1]; ostr << ((char*)&PiBi.mFilesize)[2]; ostr << ((char*)&PiBi.mFilesize)[3]; ostr << ((char*)&PiBi.mReserved1)[0]; ostr << ((char*)&PiBi.mReserved1)[1]; ostr << ((char*)&PiBi.mReserved2)[0]; ostr << ((char*)&PiBi.mReserved2)[1]; ostr << ((char*)&PiBi.mOffset)[0]; ostr << ((char*)&PiBi.mOffset)[1]; ostr << ((char*)&PiBi.mOffset)[2]; ostr << ((char*)&PiBi.mOffset)[3]; return( ostr); }Das fuehlt sich aber irgendwie "unsauber an", auch wenns klappt.
Hat irgendjemand Verbesserungsvorschlaege?
Und ein weiteres Problem

Selber Header( standardkonform natuerlich)
hat die Wertgroessenshort
int
short
short
intmacht als summe 14 byte
Weil aber auf das short gleich ein int kommt laesst der
Rechner/Compiler/heinzelmaennchen da 2 byte frei weil er intern ja mit
4 byte schritten arbeitet.Wie kann ich die groesse vom rechner bestimmen lassen?
Gebe momentan 14 manuell vor weil sizeof nicht funzt aber da gibts doch bestimmt alternativen oder?
( sowas wie explicit size oder so)Danke im voraus
PIlger81
-
mit write kannst du binäre werte in den Stream schreiben.
Und mit read sie wieder auslesen.
-
Das ist so einfach, ich geh mal schnell in die ecke und schaem mich

Danke erstmal fuer die schnelle Antwort.
(low level IO in C is einfacher aber ich will mir son bissl C++ angewoehnen