Вы не инициализируете переменную 'base', но, хотя это приведет к ошибкам, это (напрямую) не связано с поведением, которое вы видите с cin, хотя иногда это, в зависимости от компилятора, вызывает вас пропустить петли. Возможно, вы работаете в режиме отладки, который инициализируется нулями или что-то в этом роде.
Тем не менее, при условии, что это было исправлено:
Когда вы набираете значение (скажем, 5) и нажимаете ввод, данные в потоке имеют вид 5<newline>
- оператор << не извлекает новую строку из потока, а cin.get () -. Ваш первый cin.get () извлекает эту новую строку из потока, а второе ожидание ожидает ввода, потому что поток теперь пуст. Если бы у вас был только один вызов cin.get (), он немедленно извлек бы новую строку и продолжил, и поскольку после этого вызова cin.get () ничего не происходит, программа завершается (как и должно быть). </p>
Похоже, вы используете cin.get (), чтобы остановить закрытие вашей программы при запуске из отладчика; обычно вы можете сделать это с помощью специальной команды «запустить без отладки» из вашей IDE; тогда вам не нужно злоупотреблять cin.get () для этой цели.