我想驗證雙數據類型的輸入,我已經部分成功了,因爲如果用戶輸入的第一個內容是字母,它將輸出錯誤消息,但是如果用戶輸入了編號在開始然後程序接受它,但它不應該。有想法該怎麼解決這個嗎?這裏是我到目前爲止的代碼:雙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();
}
_「但是,如果用戶在一開始那麼程序接受它,輸入一個號碼,雖然它不應該」 _你能詳細說明一下嗎? 「雙」值自然會帶數字? –
好吧,所以如果輸入是像「5bffhds」(數字作爲第一件事)那麼該程序將不會認爲它是失敗的cin,而它是。如果輸入類似「gfsd3fdj」,驗證工作正常。 – PinkieBarto
將輸入解析爲字符串塊,並使用'stod()'進行轉換。 –