无法尝试从二进制文件中读取短整数(C ++)

时间:2014-11-19 06:23:09

标签: visual-c++ fstream binaryfiles

我有一个二进制文件,其中第一行包含我存储到变量中的元数据(例如,行343列770 ...)。在此之后,文件的其余部分包含与我想要存储的各种高度相关的短整数(在这段代码中,我只是测试我是否可以获得单个值)。我的代码:

  int map[800][800];
  string a;
  int numrows, numcolumns, bytespp, secondspp, lls, tls, min, max, special;
  ifstream infile;
  infile.open("usaW70N25D5.dat", ios::binary | ios::in);
  infile >>a >> numrows >> a>>numcolumns >> a>> bytespp >>a >> secondspp >>a >> lls >> a>> tls >> a>> min >>a >> max >>a >> special;
  int row = 0; max = 0;
  cout << numrows << " " << numcolumns << " " << bytespp << " " << secondspp << " " << lls << " " << tls << " " << min << " " << max << " " << special << endl;

  short int val = 0;
  infile.read((char*)&val,sizeof(infile)); 
  cout << val<< endl;

我得到的错误是:

mapproject.exe中0x52ec6e9f(msvcp100d.dll)的未处理异常:0xC0000005:访问冲突读取位置0xfe0cfe0c。

我在尝试阅读文件时出错了?我想也许我不得不把位置移到一边试过:

  int spot = infile.tellg(); spot+=1;
  infile.seekg(spot);

但这没有帮助。

1 个答案:

答案 0 :(得分:0)

流读取>>不读取两个二进制字节。它读取一串字符。