f.read((char*)&i, sizeof(int)); ? Kann mir das jemand erklären ???
-
hi,
ich lerne mich gerade etwas mit streams ein aber hab gerade an einen punkt einen durchhänger.
was bedeutet denn der folgende code:
f.read((char*)&i, sizeof(int));
read(BUFFER, COUNT); count heißt wieviel Bytes jeweils eingelesen werden sollen aber für was ist der Buffer und vorallem was bedeutet (char*)&i ???
(char*)&i heißt doch: einen zeiger vom typ char denn die stelle des im speicher der variablen i zuweisen. oder ?
bin für hilfe echt dankbar!
-
Du liest binär aus, und schreibst die nächsten <sizeof(int)> Bytes
in i, welches zu diesem Zweck nach char* konvertiert wird.Devil
-
also wenn ich dich richtig verstanden habe heißt das folgendes:
so sieht z.b. der steam aus:
while(f) // lese solange bis ende der datei erreicht wurde { f.read((char*)&i, sizeof(int)); // Wert von i in char konventieren }
|0101110100...|4 Byte|4 Byte|4 Byte|4 Byte|4 Byte|...
^
i = der binäre wert an der gelesenen stelleist das soweit richtig ???
-
ja, so kann man es formulieren.
-
heftig!
aber was bedeutet denn (char*)&i jetzt und wieso nennt sich das Buffer ?
-
In solchen Fällen hilft das meistens den Kram etwas schöner zu gestalten und benennen(mir zumindest):
leg mal ne Datei bla.txt an und schreib da ien paar Buchstaben rein, mindestens aber 4.
Dann probier das:ifstream datei("bla.txt"); int i = 5; char* ziel = (char*)&i; int anzahl_zeichen = sizeof(int); datei.read((char*)&ziel, anzahl_zeichen); cout << "habe "<<anzahl_zeichen<< "Zeichen aus bla.txt gelesen und in den Integer 'i' geschrieben, welcher jetzt auf " << i << steht; datei.close();
dazu gibts auch ein gutes Tutorial wo ich das auch mal endgültig von gelernt hab:
http://www.cpp-home.com/loobian/tutorials/file_io/5.php
-
binary trust schrieb:
heftig!
aber was bedeutet denn (char*)&i jetzt und wieso nennt sich das Buffer ?
int ist 4 Byte gross.
char 1 Byte. Macht 4*char = 1*int.
int i = 'a', geht aber auch, da hier der ASCII wert übergeben
wird. Binär musst du also das Int in einen char* Konvertieren.
Und Buffer ist in der Regel der Bereich in den Daten geschrieben werden.Devil
-
Danke für eure Hilfe !!!