首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-10 
文件指针移动无效?temp.txt文件的内容为:abcdefgvoidmain(intargc,char*argv[]){fstreamfile( temp.txt

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

热点排行