Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用ifstream向后读取在文件位置-620字节后停止读取_C++_Ifstream - Fatal编程技术网

C++ 使用ifstream向后读取在文件位置-620字节后停止读取

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);

我正在使用ifstream读取文件。我正在从文件的末尾读取文件。我有一个从计数器变量中减去一的循环。循环的每一次迭代,我都使用
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。我正在搜索一个值,该值指示一些重要信息的开始,但它总是接近结束。