当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
C++技巧 :C++读取文件seekg()无效的问题
发布时间:2010/1/19 21:58:31 来源:城市学习网 编辑:海蓝

  book_data.infile.seekg(0,ios::beg);

  while(1)

  {

  char templine[81];

  int a,b;

  book_data.infile>>a>>b;

  if(book_data.infile.eof())

  {

  break;

  }

  //do something

  book_data.infile.getline(templine,80);

  }

  现象:第一次读取成功,之后都读取失败,经过调试发现book_data.infile.seekg(0,ios::beg);这句不起作用,在这句之后添加long p=book_data.infile.tellg();cout<<"p="<<p<<endl;第一次输出 p=0之后都输出p=-1,即读取出错。

  原因:第一次读取到文件末尾时,再次进行读取,将会设置eof标志,下次读取需要用.clear()来清除该标志。

  book_data.infile.seekg(0,ios::beg);

  while(1)

  {

  char templine[81];

  int a,b;

  book_data.infile>>a>>b;

  if(book_data.infile.eof())

  {

  book_data.infile.clear();//for next read

  break;

  }

  //do something

  book_data.infile.getline(templine,80);

  }

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved