이 프로그램이 .Bin 파일에서 올바르게 읽거나 쓰지 않는 이유는 무엇입니까? (C ++)

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

  •  05-09-2019
  •  | 
  •  

문제

이 프로그램을 만들었습니다.

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

정수 "n"을 .bin 파일 "test.bin"에 작성한 다음 "test.bin"에서 정수 "x"로 데이터를 읽은 다음 화면에 "x"를 표시해야합니다.

프로그램을 실행하면 5가 아니라 -842150451이 표시됩니다. 왜 이런 일이 발생하고 어떻게 해결할 수 있습니까?

도움이 되었습니까?

해결책

File.write ()가 쓸 때 현재 파일 포인터를 움직이지 않아 서면 데이터 후 첫 번째 위치에서 데이터를 읽을 수 있습니까?

다른 팁

끼워 넣다 file.seekg(0); 읽기와 쓰기 명령 사이.

방금 작성한 데이터를 읽기 위해 쓰기를 수행 한 후 파일 스트림을 파일 스트림을 재배치해야합니다.

또한 글이 당신이 기대했던 모든 것을 썼는지, 읽기가 실제로 무엇이든 읽는 지 확인해야합니다. 반 랜덤 번호는 읽기 실패로 인한 것입니다.

나는 Jherico에 동의합니다. 당신은 A가 필요합니다 :

file.seekg (0, ios::beg);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top