ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 12) онлайн

Ввод чисел

Посмотрим, как обрабатываются ошибки при вводе чисел. Приводимый ниже

подход применяется к числам, прочитанным с клавиатуры или с диска. Идея со-

стоит в том, чтобы проверять значение goodbit, сообщать об ошибке, если его зна-

чение не равно true, и давать возможность пользователю ввести корректное число.

while(true)        // Цикл до тех пор. пока

// ввод не будет корректным

{

  cout <<"\nВведите целое число: ";

  cin >> i;

  if( cin.good() ) // если нет ошибок

    {

    cin.ignore(10, '\n'); //удалить разделитель строк

    break;

    }          // выйти из цикла

  cin.clear();        // Очистить биты ошибок

  cout << "Неправильный ввод данных";

  cin.ignore(10, '\n'); // Удалить разделитель строк

  }

cout << "целое число: " << i; //целое без ошибок

Самая общая ошибка, которая определяется по этой схеме, это ввод не цифр,

а каких-либо символов (например, «девять» вместо «9»), Это приводит к уста-

 

новке флага failbit. Но определяются и системные ошибки, наиболее типичные

при работе с дисковыми файлами.

Числа в формате с плавающей запятой (float, double и long double) могут ана-

лизироваться на предмет неправильного ввода так же, как и целые числа.

 

13