Причина, по которой программа переходит в бесконечный цикл, связана с тем, что флаг неудачного ввода 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
или другим методом, который позволяет проверять преобразование.
Вы можете использовать Object.values () :
пример ниже:
var foo = {
"currency": "dollar"
};
var bar = "currency";
console.log(Object.values(foo).indexOf(bar) >= 0); //false
console.log(Object.keys(foo).indexOf(bar) >= 0); //true
var foo = {
"currency": "dollar"
};
var bar = "currency";
Проверьте, существует ли ключ:
if (foo[bar])
Или:
if (foo.hasOwnProperty(bar))
Проверьте, имеет ли свойство правильное значение
if (foo[bar] == "dollar")