c++文件seekg(),文件位置指针移动有关问题
c++文件seekg(),文件位置指针移动问题
std::fstream _mfile;
while(1){
if( _mfile.eof())
{
req.read.data = 0;
_mfile.seekg(0, ios_base::beg);
}
else
{
_mfile.seekg(offset, ios_base::beg);
_mfile.read((char *)&req.read.data, req.read.size);
}
}
部分代码如上:
我跟踪调试了一下,发现当文件的当前位置移动到文件末尾时,此时if( _mfile.eof())成立,进入if中执行req.read.data = 0;等语句.但当再一次循环时,仍然进入到
if( _mfile.eof())中执行,怎么感觉“_mfile.seekg(0, ios_base::beg);”这句没有执行啊?文件读到末尾时,就不能再用seekg移动到文件开头吗??
我想当读到文件末尾时,再把文件指针移动到文件开头,怎么办啊?
请各位执教,谢谢!
------解决方案--------------------
if( _mfile.eof())
{
_mfile.clear(); //清楚错误状态, 包括eof!!!
req.read.data = 0;
_mfile.seekg(0, ios_base::beg);
}
------解决方案--------------------
你还不如一次性读到内存里面,然后想干嘛就干嘛
------解决方案--------------------
二楼的正解
std::fstream _mfile;
while(1){
if( _mfile.eof())
{
req.read.data = 0;
_mfile.seekg(0, ios_base::beg);
}
else
{
_mfile.seekg(offset, ios_base::beg);
_mfile.read((char *)&req.read.data, req.read.size);
}
}
部分代码如上:
我跟踪调试了一下,发现当文件的当前位置移动到文件末尾时,此时if( _mfile.eof())成立,进入if中执行req.read.data = 0;等语句.但当再一次循环时,仍然进入到
if( _mfile.eof())中执行,怎么感觉“_mfile.seekg(0, ios_base::beg);”这句没有执行啊?文件读到末尾时,就不能再用seekg移动到文件开头吗??
我想当读到文件末尾时,再把文件指针移动到文件开头,怎么办啊?
请各位执教,谢谢!
------解决方案--------------------
if( _mfile.eof())
{
_mfile.clear(); //清楚错误状态, 包括eof!!!
req.read.data = 0;
_mfile.seekg(0, ios_base::beg);
}
------解决方案--------------------
你还不如一次性读到内存里面,然后想干嘛就干嘛
------解决方案--------------------
二楼的正解