Nicht Lesen kann, einfach binäre zahlen aus Datei? (C++)

Mein code ist einfach als das:

AKTUALISIERT:

#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char **argv)
{
  ifstream r("foo.bin", ios::binary);
  ofstream w("foo.bin", ios::binary);
  int i;

  int ints[10] = {0,1,2,3,4,5,6,8,9};
  w.write((char*)&ints, sizeof(ints));

  int in_ints[10];
  r.read((char*)&in_ints, sizeof(in_ints));

  for(i = 0;i < 10;i++) {
    cout << in_ints[i] << " ";
  }
  cout << endl;

  return 0;
}

Nun, das schreiben Teil scheint erfolgreich zu sein, zum Beispiel für die Ausführung des od-Befehls mit 32-bit longs (mein system ist 32-bit) zeigt die richtige Reihenfolge, einschließlich einen hex-dump.

Lesen, allerdings bekomme ich random-Sequenzen solche und negativen ganzen zahlen, sollte das nicht passieren (es ist aufgeteilt, und meistens Nullen meinem ganzen zahlen sind kleiner, die Zeichen-bits sollten sich nicht auf.)

Siehst du warum meine read-Methode hat nicht funktioniert, wenn es ist wirklich das Gegenteil von meinem write-Methode?

  • poste bitte ein komplettes Stück code.
  • Ist dies Ihre tatsächliche code? Wenn ja, möchten Sie vielleicht zu versuchen, die Schließung oder zumindest die Spülung schreiben-stream, bevor mit dem lese-stream.
  • Ich entschuldige mich, ich habe den kompletten code. Lassen Sie mich versuchen, das Spülen der stream.
  • Ah, mein Mangel an C++ - wissen in seiner Gesamtheit.. Wenn man könnte dies als eine Antwort Sven, ich konnte es akzeptieren. Es funktioniert.
  • Sie weiß nicht, ob der Aufruf read gelungen. Überprüfen Sie immer die Rückgabewerte.
InformationsquelleAutor John S. | 2011-06-07
Schreibe einen Kommentar