ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В 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) могут ана-
лизироваться на предмет неправильного ввода так же, как и целые числа.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48