C++读取文件seekg()无效的问题

2014-11-19 13:59:16 · 作者: · 浏览: 35

  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="<


  原因:第一次读取到文件末尾时,再次进行读取,将会设置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);


  }


  编辑特别推荐: