可能是重复问题:
为什么cin读取被卡住了?
我重载了istream运算符(istream&operator>>...
),它接受格式为Point的输入:
(<x-coordinate>,<y-coordinate>)
我想多次(10次)测试这个,因此我写了以下代码:
我想多次(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()
清除的是标志位,而不是内容。你需要使用ignore
。 - chris