Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Центр помощи > [C++] Целые числа |
Автор: кипр 15.12.2006, 20:51 |
Прошу помощи!!!! У меня есть часть программы :если введен символ,а надо целое число,нужно чтобы программа выводила ошибку и сразу же предлагала ввести целое число заново.Я не могу понять как именно она работает?Что значат cin.fail, cin.clear();, cin.ignore(256,'\n'); (если можно расшифруйте пожалуйста)? Возможно есть другой вариант решения этой задачи? cout << "Enter array[" << i << "]: "; cin >> ar[i]; while(cin.fail()) { cin.clear(); cin.ignore(256,'\n'); cout << "ERROR! Enter integer.\n"; cout << "Enter array[" << i << "]: "; cin >> ar[i]; } Заранее выражаю благодарность. ![]() |
Автор: mr.Anderson 15.12.2006, 20:56 |
cin.fail() - то есть цикл работает до тех пор, пока во входном потоке есть ошибочный символ. Ошибочным он будет как раз тогда, когда вводится символ, так как элемент массива - число целого типа. При введении символа возникает несовпадение типов, и, как следствие, ошибка, которая и обрабатывается функцией fail(). cin.clear() - очистка входного потока. cin.ignore() - игнорирование по всей длине потока символов переноса строки. |
Автор: Dov 15.12.2006, 21:08 |
sim7, ![]() Всё правильно, молодец. |
Автор: mr.Anderson 15.12.2006, 21:55 |
![]() ![]() |
Автор: кипр 15.12.2006, 22:07 |
![]() ![]() |
Автор: Dov 15.12.2006, 22:20 |
кипр, ну, напиши 255 или 250, какая разница. Можешь даже 999 написать, не жалко. ![]() |
Автор: V.A.KeRneL 16.12.2006, 02:38 |
std::cin.ignore() can be called three different ways: 1. No arguments: A single character is taken from the input buffer and discarded: std::cin.ignore(); //discard 1 character 2. One argument: The number of characters specified are taken from the input buffer and discarded: std::cin.ignore(33); //discard 33 characters 3. Two arguments: discard the number of characters specified, or discard characters up to and including the specified delimiter (whichever comes first): std::cin.ignore(26, '\n'); //ignore 26 characters or to a newline, whichever comes first http://www.augustcouncil.com/~tgibson/tutorial/iotips.html |