Ваш код зацикливается бесконечно, потому что вы никогда не устанавливаете LOOPING
в false.В реальном коде вы устанавливаете его в false только тогда, когда пользователь выбирает выход, что никогда не произойдет, потому что пользователь больше не может вводить ввод после того, как он вводит ненулевое число в первый раз.
Причина, по которой он не запрашивает ввод после ввода символа, заключается в том, что >>
не использует недопустимый ввод.Т.е. если >>
предполагается записать в int
, но введенное пользователем не является действительным int, оно не будет записывать в int, но также не удалит пользовательский ввод из потока (вместо этогопросто установите флаг ошибки cin
, который вы должны проверить).
Ввод будет оставаться в потоке, пока вы не напишите его где-нибудь еще или не отмените его.Пока вы не сделаете это, каждая последующая попытка прочитать int
не будет выполнена, поскольку неверный ввод все еще находится в потоке.