C++ 为什么';这个程序不能从.bin文件正确读取(或写入?)吗?(C+;+;)

C++ 为什么';这个程序不能从.bin文件正确读取(或写入?)吗?(C+;+;),c++,file-io,binary-data,C++,File Io,Binary Data,我创建了这个程序: #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.wr

我创建了这个程序:

#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;
}
#包括
#包括
使用名称空间std;
int main(){
流文件;
open(“test.bin”,ios::in | ios::out | ios::binary);
如果(!file.is_open())
{
返回-1;
}
int n=5;
int x;
write(reinterpret_cast(&n),sizeof(n));
read(reinterpret_cast(&x),sizeof(x));

std::cout不是文件。write()在写入时移动当前文件指针,导致您从写入数据后的第一个位置读取数据?

为了读取刚刚写入的数据,您必须在写入后将文件流重新定位到文件的开头


您还应该检查写入操作是否写入了您期望的所有内容,以及读取操作是否确实读取了任何内容。半随机数是由于读取失败造成的。

在读取和写入命令之间插入
文件。请参见kg(0);

我同意Jherico的观点。您需要:

file.seekg (0, ios::beg);

否-不是908555的dup;这不包括读取任何数据。不需要ios::beg(seekg过载)