Binäres schreiben und lesen von Integern
-
Hallo,
ich möchte in eine Datei einen Integer und einen Double binär schreiben und später wieder binär lesen.
Probiere seit paar Stunden rum und such auch im Internet, leider habe ich Probleme damit. Im Moment versuch ichs so (Code gekürzt)int number = 123456; hashFile.open("datei.txt", ios::binary); hashFile.write((char*)&number,sizeof(number));int number; hashFileIn.open("datei.txt", ios::binary); hashFileIn.get(reinterpret_cast<char*>(&number),sizeof(number));Ja die 2 verschiedenen Casts sind da nur, weil ich rumprobiert habe.
Auf jeden Fall funktioniert es wunderbar, bis die Zahl zu groß oder zu klein ist.
12345678
gibt er z.B. richtig wieder aus,
10 und 123456789 wiederrum nicht.Bei Double hat es hinten und vorne nicht funktioniert.
Wäre nett wenn wer helfen könnte, ich verzweifle.Danke
-
Irgendwo hast du einen Fehler gemacht:
int main() { { ofstream hashFile("datei.txt", ios::binary); if(hashFile.good()) { int number = 2100000000; double d = 3.14; hashFile.write(reinterpret_cast<char*>(&number),sizeof(number)); hashFile.write(reinterpret_cast<char*>(&d),sizeof(d)); } } { ifstream hashFile("datei.txt", ios::binary); if(hashFile.good()) { int number; double d; hashFile.read(reinterpret_cast<char*>(&number),sizeof(number)); hashFile.read(reinterpret_cast<char*>(&d),sizeof(d)); cout << number << "\t"<< d << endl; /* Alternativ hashFile>>number; hashFile>>d; */ } } }Edit: Den Zustand des Streams solltest du immer vorher prüfen, evtl. erlaubt dir das Betriebssystem kein Anlegen einer neuen Datei im Ordner etc.
-
Hallo,
du hast read anstelle von get hergenommen.
so gehts..........vielen lieben dank!!!!
-
Oh ja, ist mir beim Überfliegen deines Codes gar nicht aufgefallen...