Докер Многоэтапные проблемы с авторизацией сборки - но никаких проблем с аутентификацией при включении

Причина, по которой программа переходит в бесконечный цикл, связана с тем, что флаг неудачного ввода std::cin установлен из-за сбоя ввода. Необходимо сделать это, чтобы очистить этот флаг и отбросить плохой вход из входного буфера.

//executes loop if the input fails (e.g., no characters were read)
while (std::cout << "Enter a number" && !(std::cin >> num)) {
    std::cin.clear(); //clear bad input flag
    std::cin.ignore(std::numeric_limits::max(), '\n'); //discard input
    std::cout << "Invalid input; please re-enter.\n";
}

См. C ++ FAQ для этого и другие примеры, включая добавление минимальный и / или максимальный в условие.

Другим способом было бы получить ввод как строку и преобразовать его в целое число с std::stoi или другим методом, который позволяет проверять преобразование.

0
задан Jeef 15 January 2019 в 21:15
поделиться