读书人

文件指针移动无效?该如何解决

发布时间: 2012-02-10 21:27:42 作者: rapoo

文件指针移动无效?
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

读书人网 >C++

热点推荐