Integerzahlen sind auf 32bit-Systemen 4 Byte groß - liegen also mit 4 Bytes (=4 characters) hintereinander im Speicher.
Über &Highscore bekommt man einen Zeiger auf das erste der 4 Bytes. Mit
sizeof(Highscore) bekommt man die Größe des Integers - also 4 Byte
meistens. Es ist übrigens guter Stil hier sizeof() zu verwenden - denn dann
läuft der Code auch auf 64Bit Systemen unverändert.
Durch das casten auf (char *) verhindert man lediglich ein Warnung des
Compilers über eine ungültige/verdächtige Typkonvertierung denn (so weit
ich mich erinnere) erwartet die write-Funktion einen char * als Argument.
Durch den Aufruf
|
C-/C++-Quelltext
|
1
|
Output.write ((char*) &Highscore, sizeof (Highscore));
|
Werden nun also 4 Bytes aus dem Speicher in die Datei geschrieben. Durch
das entsprechende read()-Kommando kann man dann später die Integer-
Zahl wieder einlesen.
Nachteil dieser Methode: So gespeicherte Dateien sind NICHT portabel
zwischen 32 und 64 Bit-Systemen und auch solchen die anstatt der Little-
die Big Endian Reihenfolge verwenden.
Ich persönlich bevorzuge darum das Speichern als Klartext - wenns ums
Platz sparen geht kann man ja einen bz2-Stream verwenden.
Grüße
Stefan