用C++流读文件,文件末尾多加了空格怎么办

先来看一段小代码

#include  " iostream "
#include 
" fstream "
using namespace std;

void  main()
{
    
int i;
    ifstream fis(
"input.txt");
    
while (!fis.eof())
    
{
        fis
>>i;
        cout
<<i<<endl;
    }

    fis.close();
}
input.txt文件里面是一些数字,如果是
23 23  44  5  23  56   空格 回车
那么读出的结果将是多出一个56来,为什么会这样呢?
因为fis.eof()并没有指向文件的末尾,fis>>i 由于读出类型与int不同,忽略。
而i的值还是上一次输入的56,故多输出了一次。
解决方法如下
#include  " iostream "
#include 
" fstream "
using namespace std;

void  main()
{
    
int i;
    ifstream fis(
"input.txt");

    
while (fis>>i)
    
{    
        cout
<<i<<endl;
    }

    fis.close();
}

你可能感兴趣的:(用C++流读文件,文件末尾多加了空格怎么办)