Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Goga201
0 / 0 / 0
Регистрация: 04.02.2008
Сообщений: 10
#1

проверка на число - C++

29.03.2010, 17:18. Просмотров 976. Ответов 3
Метки нет (Все метки)

код
C++
1
2
3
4
5
6
7
8
9
10
        int index;
 
        ...
 
        while (1)
    {
    cin >> index;
    if (cin.good()) break;
    cout << "Неверный ввод! Вводите в числовом формате:"<<endl;
    }
сделал проверку, чтобы пользователь вводил числовой вариант, но если мы вводим буквы, то программа зацикливается сообщением, тоесть второй раз cin >> index; не вызывается.

Как быть?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2010, 17:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос проверка на число (C++):

Visual C++ проверка ввода на число, проверка на кирилицу - C++
Суть ввести с клавиатуры нечто, и повторять ввод до тех пор пока введенное число не будет числом. Этот код проверяет на буквы и знаки,...

Проверка введенных данных: число/не число - C++
проходим try catch throw в универе. взял стаааааарую прогу и в нее вкладываю проверки введенных данных посредством try catch throw но у...

Проверка введено ли число - C++
Подскажите как сделать чтобы при нажатии кнопки проверялись поля Edit, если введено число(как целое, так и десятичное) происходили расчеты,...

двузначное число, проверка - C++
Здравствуйте, выполнил проверку на чётные/не чётные числа, а как проверить на двузначность ? :-#include &lt;iostream&gt; using namespace std; ...

проверка на целое число - C++
Можно ли сделать проверку на ввод целого числа, если его тип сразу задается, как int? Просто это массив и другой тип данных не применим,...

Проверка на Hex число - C++
Не могу понять как сделать чтобы правильно проверяла строки на шестнадцатиричное число. Если строка только сост из Hex числа. то она...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
PointsEqual
ниначмуроФ
835 / 519 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
29.03.2010, 17:31 #2
у меня точно такая же проблема была , вот пример использования :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 while (true){
            CharToOem("Введите количество потребителей: ",message);
            std::cout<<message;
            std::cin>>count_consumer;
            if (!cin.good() || count_consumer<=0){
                count_supplier=0;
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(),'\n');
                SetConsoleTextAttribute(con, FOREGROUND_RED | FOREGROUND_INTENSITY);
                CharToOem("Неверные данные!. ",message);
                std::cout<<message<<std::endl;
                SetConsoleTextAttribute(con, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
            } else break;
        }
Добавлено через 36 секунд
тоесть надо после дописывать 2 строчки
C++
1
2
cin.clear();
 cin.ignore(numeric_limits<streamsize>::max(),'\n');
1
Goga201
0 / 0 / 0
Регистрация: 04.02.2008
Сообщений: 10
29.03.2010, 17:41  [ТС] #3
еще вариант нашел, вставить строчки
C++
1
2
cin.clear();
cin.ignore(cin.rdbuf()->in_avail());
но не очень понятно как вот это: cin.rdbuf()->in_avail() работает
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
29.03.2010, 18:02 #4
cin.rdbuf() - возвращает указатель на буфер потока cin
streamsize in_avail( );

Returns the number of elements that are ready to be read from the buffer.
Возвращает число элементов, готовых быть прочтенными из буфера (в данном случае из буфера потока cin)

basic_istream<Elem, Tr>& ignore(
streamsize _Count = 1,
int_type _Delim = traits_type::eof( )
);

Causes a number of elements to be skipped from the current read position.
Пропускает число элементов, начиная с текущей позиции.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2010, 18:02
Привет! Вот еще темы с ответами:

Проверка строки на число - C++
Здравствуйте. Почему когда я ввожу буквы вместо числа, то цикл не выполняется и выводится b? Собственно нужно осуществить ввод числа, но...

Проверка на введенное число - C++
Здравствуйте. Как проверить что было введено число а не что то другое. Например я написал подпрограмму, которая проверяет что было введено...

Проверка на вещественное число - C++
Здравствуйте! Подскажите пожалуйста! Существует-ли проверка на вещественное число? Есть такой код - double smallest(double, double,...

Проверка на действительное число - C++
Собственно, задачу я уже в голове продумал. Но появился вопрос в ходе решения: можно ли как-то в конструкции if задать выражение, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.03.2010, 18:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru