Как указано в одном из ответов, легче прочитать ввод в строку и затем оценить эту строку. Вот пример:
#include <iostream>
#include <string>
int main() {
std::string trap;
std::cout << "Enter 1 or 0" << std::endl;
std::getline(std::cin, trap); // fetch user input, save into trap
while (std::cin.fail() || (trap != "1" && trap != "0")) {
std::cout << "That was not a 1 or 0; try again" << std::endl;
std::getline(std::cin, trap);
}
return 0;
}
Этот код считывает все введенные пользователем данные, определяет, является ли это 1 или 0, и либо успешно завершается, либо запрашивает пользователя в зависимости от того, что они ввели.
Если я правильно понимаю, что-то подобное может помочь вам достичь того, что вы хотите с точки зрения защиты от несанкционированного доступа. Я рекомендую вам адаптировать свой код к чему-то похожему вместо того, чтобы иметь несколько функций, выполняющих похожие задачи.