C++ 使用ifstream向后读取在文件位置-620字节后停止读取
我正在使用ifstream读取文件。我正在从文件的末尾读取文件。我有一个从计数器变量中减去一的循环。循环的每一次迭代,我都使用C++ 使用ifstream向后读取在文件位置-620字节后停止读取,c++,ifstream,C++,Ifstream,我正在使用ifstream读取文件。我正在从文件的末尾读取文件。我有一个从计数器变量中减去一的循环。循环的每一次迭代,我都使用ios::end常量,从文件末尾开始寻找该位置。一切正常,除了在文件末尾-620字节后停止读取文件 long fileposition; char magicvalue[4]; while(keeplooking) { infile.seekg(fileposition, std::ios::end); infile.read(magicvalue,4);
ios::end
常量,从文件末尾开始寻找该位置。一切正常,除了在文件末尾-620字节后停止读取文件
long fileposition;
char magicvalue[4];
while(keeplooking)
{
infile.seekg(fileposition, std::ios::end);
infile.read(magicvalue,4);
fileposition -= 0x01;
}
我已经使用了我的调试器,除了在循环之后,一切都正常工作。fileposition变量不断变小,但当我调用read函数时,magicvalue的值从未更改。我在十六进制编辑器中查看正在读取的文件,然后继续,但它再次停止读取
有人知道为什么会发生这种情况吗?为什么要读取四个字节,但只将位置递减一个?另外,如何初始化fileposition?
fileposition
未初始化。如果您将它初始化为某个对象,那么您不认为这可能与问题有关吗?据我们所知,您可能正在将其设置为文件偏移量620。你忘了告诉我们你的文件到底有多大。据我们所知,它可能正好有620字节长。在我的特殊情况下,文件位置被初始化为-0xB2。我正在搜索一个值,该值指示一些重要信息的开始,但它总是接近结束。