3
我想創建一個可以正確處理所有輸入的輸入系統。期望的用戶輸入是雙倍的。當用戶輸入字符串時,字符串流將失敗並處理異常。但是,程序無法處理諸如「3245 2345 5」和「21523i4jf」之類的輸入,而不是將它們標記爲不正確的輸入,而是在字符串的開頭註冊數字,並將其傳遞給雙數而不引發異常。我應該如何讓我的程序正確處理所有用戶輸入?
while (true)
{
string user_input;
cout << "Your Choice: ";
getline (cin, user_input);
cout << endl;
if (user_input == "quit")
{
break;
}
try
{
double number;
stringstream stringstream_input;
stringstream_input << user_input;
stringstream_input >> number;
if (stringstream_input.fail())
{
throw 90;
}
cout << number << endl << endl;
}
catch (int x)
{
cout << "Please enter a valid input!" << endl << endl;
}
}
這可能是你想要什麼:https://stackoverflow.com/questions/24504582/how-to-test-whether-stringstream-operator-has-parsed-a-bad-type-and-skip -IT/27004240#27004240 – Galik