我重載istream的操作者(istream &operator>>...
),它需要在格式的一個點:
(<x-coordinate>,<y-coordinate>)
我想測試此多(10)倍,因此採寫:
for (int i = 0; i < 10; i++) {
cin >> a;
if (!cin.fail()) { cout << a << endl; }
else { cout << "Invalid input!" << endl; cin.clear(); }
}
編輯:
我現在有下面的代碼:
for (int i = 0; i < 10; i++) {
cin >> a;
if (!cin.fail()) { cout << a << endl; }
else {
cout << "Invalid input!" << endl; cin.clear();
while (!cin.eof()) { cin.ignore(); } cin.ignore();
}
}
忽略被邪神建議。但是,問題是cin仍然輸出「輸入無效!」通過上面的代碼運行後:
(3,3) <-- input
(3,3) <-- output
Invalid output! <-- second output
有沒有辦法,我可以清除什麼是在cin?
'cin.clear()'清除標誌,而不是內容。你想'忽略'。 – chris
可悲的是,「卡住」是不是我會搜索和TL的一個術語;博士。 :) – Supervisor
'tl; dr'不好回覆有用答案。 – nothrow