posts - 9, comments - 3, trackbacks - 0, articles - 1

先来看一段小代码

#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();
}

Feedback

# re: 用C++流读文件,文件末尾多加了空格怎么办  回复  更多评论   

2006-11-24 14:08 by
我发现即使不在文件尾多写个空格也会产生这种情况,那是怎么回事呢?

# re: 用C++流读文件,文件末尾多加了空格怎么办  回复  更多评论   

2006-11-24 14:16 by
请问在判断条件里直接写(!fis)也会多出最后一个数的值,那是怎么回事呢?刚才的反馈写错了,我的判断条件是(!fis),不是你的那种。你的解决方法很不错,我也经常遇到同样的问题。

# re: 用C++流读文件,文件末尾多加了空格怎么办  回复  更多评论   

2007-11-04 13:59 by liangent
fin.fail()

只有注册用户登录后才能发表评论。


网站导航: