Эта функция должна открыть файл .txt так:не удается прочитать из файла все целые строки (ifstream)
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
}
}
Однако, когда я «COUT» результаты я получаю что-то вроде этого:
x=1 y= w=5
x=2 y= w=6
без y!
Почему это могло случиться?
PS: Кроме того, eof() становится истинным после завершения файла (читает одну дополнительную строку). Как я могу остановить пока итерация правильно?
Это файл, я пытаюсь читать: http://www.speedyshare.com/tpvuD/input.txt
Что касается вашего PS: [Почему 'iostream :: eof' внутри условия цикла считается неправильным?] (Http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition -considered-wrong) – WhozCraig
Помимо проверки 'eof', код должен работать, а это значит, что ошибка указана в коде, который вы нам не показываете, или что входной файл не в том формате, который вы сказали. – jrok
«... когда I 'cout« результаты ... », эти результаты не выводятся из выходного цикла в этом опубликованном коде. Во-первых, у опубликованного кода есть двоеточия (':'), а не равно ('='). Независимо от того, что вы утверждаете, это неправильный вывод, это не из этого цикла. Мой хрустальный шар подсказывает мне код, который * * пишет ваш вывод, никогда не отправляет y-значение в выходной поток, но не видя * реального * кода, его невозможно сказать наверняка. [Этот цикл работает] (http://ideone.com/UXZ6I9) после исправления ошибочного while-condition. – WhozCraig