см. Ниже C++. Его суть состоит в том, чтобы хранить переменные во входном файле («is») для глобальных массивов. Я прохожу через отладчик с часами на переменной «temp» (первый оператор if работает нормально), и после прочтения первой строки входного файла переменная temp больше не обновляется.Данные не корректно считываются из входного файла
Файл указан в определенном формате, поэтому он должен считывать int, хотя в конечном итоге я добавил символ в конце инструкции KEYFRAME if, чтобы узнать, читает ли он символ конца (это не так).
Каковы возможные причины для этого? Спасибо огромное!
void readFile(istream& is){
string next;
int j = 0;
int i = 0;
while (is){
for (int i = 0; i < F; i++){
is >> next;
if (next == "OBJECT")
{
int num;
is >> num;
string name;
is >> name;
objects[j].objNum = num;
objects[j].filename = name;
j++;
}
else if (next == "KEYFRAME"){
int k;
int temp;
is >> k;
int time;
is >> time;
objects[k].myData[time].setObjNumber(k);
objects[k].myData[time].setTime(time);
is >> temp;
objects[k].myData[time].setPosition('x', temp) ;
is >> temp;
objects[k].myData[time].setPosition('y', temp);
is >> temp;
objects[k].myData[time].setPosition('z', temp);
is >> temp;
objects[k].myData[time].setRotation('x', temp);
is >> temp;
objects[k].myData[time].setRotation('y', temp);
is >> temp;
objects[k].myData[time].setRotation('z', temp);
is >> temp;
objects[k].myData[time].setScaling('x', temp);
is >> temp;
objects[k].myData[time].setScaling('y', temp);
is >> temp;
objects[k].myData[time].setScaling('z', temp);
char get;
is >> get;
}
else {
cout << "Error reading input file";
return;
}
}
}
}
Можете ли вы разместить пример ввода? –
Возможно, вы пытаетесь проанализировать 'int', но файл в этой точке имеет некоторое нечисловое значение, тогда поток застрял в состоянии ошибки. Попробуйте проверить свои конверсии, например. '#define ASSERT (X) do {if (! X) {std :: cerr <<"! "#X" \ n "; выход (1); } while (false) 'then' ASSERT (is >> whatever); 'каждый раз - по крайней мере, он распечатает сообщение, показывающее вам, что ошибка конверсии .... –