Warum nicht dieses Programm lesen (oder schreiben?) Richtig aus einer .bin-Datei? (C ++)

StackOverflow https://stackoverflow.com/questions/908605

  •  05-09-2019
  •  | 
  •  

Frage

Ich habe dieses Programm:

#include <iostream>
#include <fstream>
using namespace std;

int main () {
  fstream file;
  file.open("test.bin", ios::in | ios::out | ios::binary);
  if(!file.is_open())
  {
      return -1;
  }
  int n = 5;
  int x;
  file.write(reinterpret_cast<char*>(&n), sizeof(n));
  file.read(reinterpret_cast<char*>(&x), sizeof(x));
  std::cout<<x;
  file.close();
  std::cin.ignore();
  return 0;
}

das soll eine ganze Zahl „n“ in eine .bin-Datei „test.bin“ schreiben, dann lesen Daten aus „test.bin“ in eine ganze Zahl „x“ ist, dann zeigt „x“ auf dem Bildschirm.

Wenn ich das Programm ausgeführt wird, zeigt es nicht 5, sondern -842.150.451. Warum tritt das und wie kann ich es beheben?

War es hilfreich?

Lösung

Ist das nicht die file.write (), um die aktuellen Dateizeiger bewegen, wenn Sie es schreiben, so dass Sie Daten von der ersten Stelle der schriftlichen Daten lesen?

Andere Tipps

Setzen Sie file.seekg(0); zwischen den Lese- und Schreibbefehle.

Sie haben die Datei-Stream auf den Anfang der Datei neu zu positionieren, nachdem Sie den Schreib tun, um die Daten zu lesen, die Sie gerade geschrieben hat.

Sie sollten auch prüfen, ob die Schreib alles schrieb man es erwartet, und ob die tatsächlich lesen überhaupt etwas zu lesen. Die halb-Zufallszahl ist aufgrund der Lese Versagen.

Ich bin mit Jherico. Sie benötigen ein:

file.seekg (0, ios::beg);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top