此函数应该打开一个.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
答案 0 :(得分:1)
要正确停止迭代,请将循环写为:
while(input>>x>>y>>w)//till the end of file
{ /* ... */ }
不要检查input.eof()
。