【发布时间】:2014-04-06 00:56:29
【问题描述】:
我需要使用 cin 从用户那里读取 int,但如果输入的是字符串,则会打印错误消息。我一直在尝试使用带有cin.fail() 的 if 语句使其工作,如果只输入字符,它就可以很好地工作。但是,如果用户输入类似3sadi 的内容,它似乎会读取 3 并将字符串的其余部分留在缓冲区中,这不会给我错误消息,因为 cin.fail() 标志未设置.如果字符串的第一个字符是 int,我怎样才能使它仍然打印错误消息?
int i1;
cin >> i1;
if (cin.fail() == true) {
cout << "error" << endl;
}
else{
cout << "success" << endl;
}
例如。 32 应该(并且确实)打印成功
red 应该(并且确实)打印错误
3x 应该打印错误但打印成功并将 x 留在缓冲区中
我怎样才能让3x 给我错误信息?或者,我可以将其作为字符串读入并将其转换为 int 并根据它是失败还是成功打印出消息,但是如何在程序中使用类型转换错误?
【问题讨论】:
-
你的意思是
int s1而不是string吗? -
是的,对不起。现在改了
标签: c++ error-handling casting cin