如何解决使用std :: istringstream测试数字失败
我试图让用户重复输入一个数字,直到他们输入为止。
如果用户在第一次尝试输入一个数字,下面的代码运行良好。但是,如果他们先输入非数字字符,然后输入数字,则循环永远不会中断,就像我期望的那样。
这是什么原因?
注意:如果我在while循环中声明iss
,它会起作用。虽然感觉有点直观,但我仍然很想知道为什么会这样以及解决此问题的最佳方法是什么。谢谢!
int main() {
std::istringstream iss;
int age = 0;
while (true){
std::string myStr;
std::getline(cin,myStr); // note: clearing entire line as need cin empty for next bit of code
iss.str(myStr);
if (iss >> age){
break; // iss >> age fails even if the user inputs a number (if first enter a non-numeric value).
}
else{
continue;
}
}
return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。