我現在有這個功能:While循環跳過排隊
double GrabNumber() {
double x;
cin >> x;
while (cin.fail()) {
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cout << "You can only type numbers!\nEnter the number: ";
cin >> x;
}
return x;
}
其目的是檢查是否x
是一個有效的數字,它返回它是否有效或重複cin >> x
如果事實並非如此。
它的這種功能中調用:
void addition() {
cout << "\nEnter the first number: ";
double a = GrabNumber();
cout << "Enter the second number: ";
double b = GrabNumber();
// rest of code
當我鍵入如「6+」時,它告訴我,進入第一個數字,它接受它,但立即轉到第二線並調用它的錯誤,甚至沒有輸入我的輸入。
我認爲這是因爲第一個輸入只接受「6」,而「+」進入第二個輸入返回一個錯誤。因此,參數while
必須存在問題。
我想你將不得不使用['getline'](http:// www .cplusplus.com/reference/string/string/getline /)並解析完整的行,而不是像那樣使用'cin' – Garf365
但Getline作爲字符串讀取 –