Я пытаюсь проверить ввод для двойного типа данных, я преуспеваю частично, поскольку он выдает сообщение об ошибке, если первое, что вводит пользователь, является буквой, однако, если пользователь вводит номер в начале, тогда программа принимает его, хотя это не должно. Есть какие нибудь идеи как это починить? Вот мой код до сих пор:Проверка не работает должным образом для двойного C++
void circleArea(double pi)
{
double radius = 0.0;
bool badInput;
do
{
cout << "*================*\n";
cout << " Area of a circle\n";
cout << "*================*\n\n";
cout << "Please enter the radius of your circle (numerics only):\n\n";
cin >> radius;
badInput = cin.fail();
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
} while (badInput == true);
system("CLS");
cout << "The area of your Circle is:\n\n" << radius*radius*pi << "cm^2" << endl << endl;
exitSystem();
}
_ «Однако, если пользователь вводит число в начале, то программа принимает его, хотя он не должен» _ Можете ли вы рассказать об этом? Значения 'double' принимают числа естественным образом? –
Хорошо, поэтому, если входной сигнал является чем-то вроде «5bffhds» (число как первое), тогда программа не будет считать его неудачным cin, тогда как это так. Валидация работает отлично, если входной сигнал похож на «gfsd3fdj». – PinkieBarto
Проанализируйте ввод в строках строки и используйте 'stod()' для преобразования. –