Не выходит проверка на введенные пользователем значения

111
03 мая 2021, 05:10

Код ошибок не вызывает, однако, при запуске кода - он даже не ждет пока пользователь введет значение и просто закрывается. Как это исправить? Так же интересует: обязательно ли (...) в catch блоке, или нужно словить какой-то определенный exception?

void d() {
    int f;
    try {
        std::cin>>f;
    } catch(...) {
        if(f!=1 | f!=2 | f!=3) {
            std::cin>>f;
        }
    }
}
Answer 1

Скорее всего у вас какой-то мусор попадает в cin с прошлого ввода или вывода, используйте cin.ignore(); перед чтением строки.

Оператор catch сработает только в том случае, если будет выброшено исключение, скорее всего сам cin его не вызовет.

А для того чтобы он точно вызвался нужно его выбросить самостоятельно с помощью throw.

void d() {
    int f;
    try {
       std::cin.ignore() 
       std::cin>>f;
       if(f!=1 || f!=2 || f!=3){
          throw(f);
       }
    } catch(...) {
         std::cout<<"Exception is occurred";
    }
}
Answer 2

1) Поставьте галку Run in terminal

2) Как вам уже скаазли if(f!=1 | f!=2 | f!=3) выполянет побитовое or. А вам, скорее всего, нужно логическое - ||

3) Но даже правильно записанное условие смысла не имеет if(f!=1 || f!=2 || f!=3). Оно всегда дает true и , возможно, какой-то ваш код из-за этого не никогда не выполнится(ветка else?). О чем вас и предупреждает статический анализатор или компилятор. Возможно вам нужно логическое and - &&

4) iostream по-умолчанию не бросает исключения. Чтобы включить это поведение нужно иcпользовать std::basic_ios<CharT,Traits>::exceptions

READ ALSO
Может ли функция не иметь имени?

Может ли функция не иметь имени?

Может ли функция не иметь имени?

95
Non-static class function - pointer

Non-static class function - pointer

В ранних версиях Android NDK использовался gnustl

121
Размытие шрифта при установки значения bold

Размытие шрифта при установки значения bold

Слева требуемы результат, справа как получается у меня:

127
Как использовать модальное окно регистрации Bootstrap с django

Как использовать модальное окно регистрации Bootstrap с django

Я недавно в программировании, и у меня возник вопросЯ нашел подходящую модалку в инете которую я скопировал и вставил но не знаю как привязать...

112