Проверка ввода для чтения в векторе ints

John спросил: 28 марта 2018 в 04:02 в: c++

Я читаю от пользователя вектор ints, и я пытаюсь выполнить некоторую проверку ввода, чтобы, если пользователь вводит букву, она меняет ее на 0. Вот что я имею.

 for(int i=0; i < columns;i++)      
                {
                    int temp3;
                    cin >> temp3;
                    if (temp3 > 100 or temp3 < 0)
                        temp3 = 0;
                    if (isalpha(temp3))   //run-time error here 
                        temp3 = 0;                    newstu.push_back(temp3);                }

прокомментированная строка является проблемой, но поскольку это ошибка во время выполнения. Я не знаю, почему это неправильно или не работает. Есть идеи? Спасибо заранее

1 ответ

Luc ответил: 28 марта 2018 в 05:28

если у вас есть доступ к boost, вы также можете попробовать использовать дизайн try / catch.

У вас есть пример: https://www.boost.org/doc/libs/1_55_0 /doc/html/boost_lexical_cast/examples.html

try
{
   args.push_back(lexical_cast<int>(temp3));
}
catch(const bad_lexical_cast &)
{
  args.push_back(0);
}