无法从文件中读取一行的所有整数(ifstream)

时间:2014-02-14 16:41:02

标签: c++ ifstream

此函数应该打开一个.txt文件,如下所示:

1    4    5 

2    4    6

等。 (数字之间有标签)

并将每个数字保存在一个变量中

void Graph::readData(char* fname)
{
    //cout<<"1";
    int x,y,w;//assistant variables
    ifstream input;//stream for reading file
    input.open(fname,ios::in);
    if(!input)
    {
        cerr<<"Input file doesn't exist"<<endl;//error if file doens exist
    }
    else
    {
        cout<<"Input file opened"<<endl;
        cout<<"Reading Data from file..."<<endl;
        while(!input.eof())//till the end of file
        {
            input>>x>>y>>w;//reads the links-site
            cout<<"x: "<<x<<"y:"<<y<<"w: "<<w<<endl;
            insertLink(x,y,w);//inserts them

        }
        input.close();//closing file
    }
}

然而,当我“结果”结果时,我会得到这样的结果:

x=1  y=  w=5

x=2  y=  w=6
没有y!

为什么会发生这种情况?

PS:此外,文件结束后eof()变为true(读取一行)。如何在正确迭代时停止?

这是我试图阅读的文件:http://www.speedyshare.com/tpvuD/input.txt

1 个答案:

答案 0 :(得分:1)

要正确停止迭代,请将循环写为:

while(input>>x>>y>>w)//till the end of file
{ /* ... */ }

不要检查input.eof()