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);
}
编辑特别推荐: