L oop не ломается при возникновении ошибки - PullRequest
1 голос
/ 22 апреля 2020

У меня есть файл, который содержит оценку для каждого человека. Количество баллов отличается от строки к строке. Я пытаюсь сохранить числа в массив для каждого человека, выполняя while(file>>array[i]), не должен ли while(file>>array[i]) прерываться, когда он пытается читать словами, так как я объявил массив как целое число? Как правильно это сделать?

John Carter: 34 51 22 15 45
Ron Wilder: 32 33 23
John Carter: 1 2 3 4
Ron Wilder: 24 25 1 2 3 4

вот лог c. Я буду проверять границы, когда эта программа работает.

void storeNum(ifstream & file)
{
   int i =0, j= 0; 
   int JohnArray[10] = {0}; //store numbers for John
   int RonArray[10] = {0};    //Stores numbers for Ron
   string stringVariable;
   while (getline(file, stringVariable,':')) //file is a ifstream variable 
   {
      if (stringVariable == "John Carter")
      {
           while (file >> JohnArray[i])   //This should break when it encounter non integer
           {
                 i++; 
           }
           if (file.fail())
          {
              file.clear();     //clear fail bit
          }
      }
      else if (stringVariable == "Ron Wilder")
      {
          while (file >> RonArray[j])    //store numbers for Ron
           {
                 j++;
            }
           if (file.fail())
           {
               file.clear();   //clear failbit
            }
      }
      else 
       {
          continue;
       }
  }
}

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Код работает нормально. Имя в файле было написано неправильно

0 голосов
/ 22 апреля 2020

Одним из способов является использование обработки исключений, псевдокод:

try{
  //your_code, ie reading from file
}catch(exception){
  //print your error here
}
...