2010-11-06 33 views
3

我看到这个代码不寻常的问题不起作用int类型变量循环一遍又一遍地重复,不问我是否重复。 这个问题刚刚出现,当我把字符不整数。 对于也出现一个循环,并在int变量字符如我所料

为什么要这样呢? 谢谢

回答

3

在读取不能转换的用户输入后,输入流处于无效状态。您需要清空流并调用clear方法重置流上的错误位以恢复正常操作。

如果检测到输入不成功(使用输入流状态位,通过像good()fail()等方法访问),你可以使用类似下面的代码重置流:

std::cin.clear(); 
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); 
0

你把cin在你无法从中提取一个int时处于错误状态,并且没有恢复。因此,当您尝试从中提取重复数据流时,数据流仍然处于失败状态。你需要检查数字的失败(只需使用if(cin >> number))。

相关问题