【发布时间】:2019-11-23 01:35:56
【问题描述】:
我已经创建了一个二进制文件,它是“index.dat”。它只包含一个整数列表。我想检查文件中存在的最后一个整数。为此,我将文件指针定位在最后一个整数并读取它。目前,我的文件包含 0 到 4 的整数,但输出始终为 6。
我该如何解决这个问题?
#include<iostream>
#include<fstream>
using namespace std;
int main()
{ int i;
ifstream infile;
infile.open("index.dat",ios::binary|ios::in);
if(infile.is_open())
{ infile.seekg(sizeof(i),ios::end);
infile.read(reinterpret_cast<char*>(&i),sizeof(i));
cout<<i;
}
infile.close();
}
【问题讨论】:
-
您能提供一个示例输入文件吗?
-
您正试图寻找
sizeof(i)字节过去文件的结尾。这当然失败了。随后的read也失败了,然后您打印未初始化的变量。从末端搜索时,您需要一个负偏移量。