Извините за этот крайний вопрос новичка,
Я использую цикл с 5 итерациями. Каждый раз, когда он зацикливается, я предлагаю пользователю ввести десятичное число, я использую cin >> aDouble. Если я наберу любое число, оно будет работать нормально, но если я введу строку, она будет повторяться пять раз, а затем продолжаться.
Вот мой код
for(int i = 0; i <= ARRSIZE; i++)
{
cout << "Please enter a decimal value: ";
cin >> myDouble;
if (!cin.fail() )
{
myVector.push_back(myDouble);
}
}
Спасибо!!
Если поток не может прочитать значение, которое он устанавливает std::ios_base::failbit
и этот бит остается установленным, пока не будет очищен. Пока бит ошибки установлен, поток ничего не делает. То есть если cin.fail()
является true
Вы также решаете проблему: вам нужно избавиться от «строки»:
if (std::cin.fail()) {
std::cin.clear();
std::cin.ignore(); // ignore one character or ....
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // rest of line
}
Вам нужно использовать cin.clear()
очистить состояние ошибки.