Não consegue ler inteiros binários simples do arquivo? (C ++)

Meu código é simplesmente assim:

ATUALIZAD:

#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;
}

Agora, a parte de gravação parece ter êxito, por exemplo, executar o comando od com 32 bits de comprimento (meu sistema é de 32 bits) exibirá a sequência correta, incluindo um dump hexadecima

Lendo, no entanto, recebo seqüências aleatórias, tais como números inteiros negativos, que não devem acontecer (é dividido e principalmente zeros, pois meus números inteiros são pequenos, os bits de sinal não devem estar ligados

Você vê por que meu método de leitura falhou, quando é realmente o oposto do meu método de gravaçã

questionAnswers(3)

yourAnswerToTheQuestion