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
|