cin & gt; & gt; двойной цикл через цикл при вводе строки

Извините за этот крайний вопрос новичка,

Я использую цикл с 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);
}
}

Спасибо!!

3

Решение

Если поток не может прочитать значение, которое он устанавливает 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
}
4

Другие решения

Вам нужно использовать cin.clear() очистить состояние ошибки.

2