我有一个二进制文件,其中第一行包含我存储到变量中的元数据(例如,行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);
但这没有帮助。
答案 0 :(得分:0)
流读取>>
不读取两个二进制字节。它读取一串字符。