【发布时间】:2013-12-11 20:39:29
【问题描述】:
我在这里尝试从用户那里获取一个整数,在输入正确时循环。
输入非整数值(例如“dsdfgsdg”)后,cin.fail() 按预期返回 true,while 循环体开始执行。
在这里,我使用 cin.clear(); 重置了 cin 的错误标志;正如预期的那样,cin.fail() 返回 false。
但是下一次调用 cin 不起作用并重新设置错误标志。
有什么想法吗?
#include<iostream>
using namespace std;
int main() {
int a;
cin >> a;
while (cin.fail()) {
cout << "Incorrect data. Enter new integer:\n";
cin.clear();
cin >> a;
}
}
【问题讨论】:
-
你必须使用
cin.ignore(...)清除输入流
标签: c++ validation input stl