c++ - 使用 std::istringstream 测试号码失败
问题描述
我试图要求用户输入一个数字,重复直到他们输入。
如果用户在第一次尝试时输入数字,则下面的代码运行良好。但是,如果他们先输入一个非数字字符,然后输入一个数字,则循环永远不会像我预期的那样中断。
这是什么原因?
注意:如果我iss
在 while 循环中声明,它会起作用。虽然感觉有点直观,但我仍然很想知道为什么会这样以及解决这个问题的最佳方法是什么。谢谢!
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;
}
解决方案
推荐阅读
- javascript - Chrome 扩展:访问存储对象的数组的长度
- php - 当 MySQL 执行大量命令时,Apache 卡住了
- postgresql - Postgresql - 查询表中的所有时间序列行
- php - PHP 条带数组
- ios - 为什么当我们尝试在切换后推送新的视图控制器时标签栏控制器开关不起作用
- python - 无法运行 PyInstaller -“请安装 PyWin32 或 pywin32-ctypes”
- visual-studio-code - 如何扩展现有的语言服务器?
- c# - Office 365 Graph 获取 Microsoft Teams 消息
- python - 在 Django 项目中保存模型文件的最佳情况
- python - Numpy 数组矢量化交集