бесконечный вывод. c++. cin

есть два варианта кода на c++, не могу понять, почему второй вариант неправильно работает:

1)

  while (true) // цикл продолжается до тех пор, пока пользователь не введет корректное значение
        {
            std::cout << "Enter a double value: ";
            double a;
            std::cin >> a;
            if (std::cin.fail())
            {
                std::cin.clear();
                std::cin.ignore(32767,'\n');
                std::cout << "Oops, that input is invalid.  Please try again.\n";
            }
            else
            {
                std::cin.ignore(32767,'\n'); 
                break;
            }
        }
while (true) // цикл продолжается до тех пор, пока пользователь не введет корректное значение
            {
                std::cout << "Enter a double value: ";
                double a;
                std::cin >> a;
                std::cin.ignore(32767,'\n'); 
                if (std::cin.fail())
                {
                    std::cin.clear();
                    std::cout << "Oops, that input is invalid.  Please try again.\n";
                }
                else
                {
                    break;
                }
            }

во втором случае бесконечно выводится: "Oops, that input is invalid. Please try again."


Ответы (0 шт):