如果采用以下形式就会存在文件读取最后一个数据被读取两遍问题:
while(1)
{
...
if(in.eof())
{
break;
}
}
原因:eof()返回true时是读到文件结束符0xFF,而文件结束符是最后一个字符的下一个字符。因此,当读到最后一个字符时,程序会多读一次(编译器会让指针停留在最后一个字符那里,然后重复读取一次,这也就是就上面最后一个字符会输出两次的原因。
应改为:
如果读入的是字符类型,可以改为:
while(in.peek()==EOF)
{
...
}
如果·不是字符类型,则只能使用以下:
int ele;
while(in>>ele)
{
...
}