## Проверить тип данных, введенных в cpp ##
int main()
{
int num;
stack<int> numberStack;
while(1)
{
cin>>num;
if(isdigit(num))
numberStack.push(num);
else
break;
}
return(0);
}
Если я объявлю переменную как целое число и введу алфавит, скажем «B» вместо числа, могу ли я проверить это поведение пользователя? Мой код выше выходит, когда вводится первое число, и не ждет дополнительных вводов.
Прежде всего, std::isdigit
функция проверяет, является ли персонаж это цифра.
Во-вторых, с помощью оператора ввода >>
Вы убедитесь, что ввод является числом, или государственный флаг будет установлен в std::cin
объект. Поэтому сделайте, например,
while (std::cin >> num)
numberStack.push(num);
Затем цикл завершится, если возникнет ошибка, конец файла или вы введете что-то, что не является допустимым int
,
используйте 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);
}