проверка типов — проверка типа ввода в переполнении стека

## Проверить тип данных, введенных в cpp ##

int main()
{
int num;
stack<int> numberStack;
while(1)
{
cin>>num;
if(isdigit(num))
numberStack.push(num);
else
break;
}
return(0);
}

Если я объявлю переменную как целое число и введу алфавит, скажем «B» вместо числа, могу ли я проверить это поведение пользователя? Мой код выше выходит, когда вводится первое число, и не ждет дополнительных вводов.

-3

Решение

Прежде всего, std::isdigit функция проверяет, является ли персонаж это цифра.

Во-вторых, с помощью оператора ввода >> Вы убедитесь, что ввод является числом, или государственный флаг будет установлен в std::cin объект. Поэтому сделайте, например,

while (std::cin >> num)
numberStack.push(num);

Затем цикл завершится, если возникнет ошибка, конец файла или вы введете что-то, что не является допустимым int,

2

Другие решения

используйте cin.fail () для проверки ошибок и очистки входного буфера.

int num;
while (1) {
cin >> num;
if (cin.fail()) {
cin.clear();
cin.sync();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
continue;
}
if (num == -1) {
break;
}
numberStack.push(num);
}
0

По вопросам рекламы [email protected]