文件指针移动无效?
temp.txt文件的内容为:
abcdefg
void main(int argc, char* argv[])
{
fstream file( "temp.txt ",ios::in |ios::binary);
char ch;
int i(0);
while(!file.eof())
{
file.read(&ch,1);
i++;
}
cout < <i-1 < <endl; //文件长度
int a;
file.seekg(ios::beg);
a=file.tellg();
cout < <a < <endl; //显示为0
file.read(&ch,1);
cout < <ch < <endl; //怎么这里显示为g??文件指针已经置头了?
}
[解决办法]
//流状态已不正确。
file.clear();
file.seekg(ios::beg);
[解决办法]
while(!file.eof())//在它完成之后,流状态已不正确。
{
}
file.clear(); //先清除流状态(默认为还原到初始状态).
file.seekg(ios::beg);//再设置流的读取位置.
还有一点,文本文件就直接使用字符方式读取了,干嘛非用二进制方式读取呢?
[解决办法]
如果lz那里a = 0的话,应该读出来的是文件第一个字母a吧
我试验结果是,a = -1,读出文件最后一个字母g
---------------------------------------
int a;
file.seekg(ios::beg);
a=file.tellg();
cout < <a < <endl; //显示为0