大佬们,我想请问一下,就是我用一个for循环,然后在for循环里面定义了一个整型的b,然后用cin函数输入b的值,然后再调用一个哈希表的插入函数把b插入进去,但是我在输入某些值后循环就会卡住,不再调用插入函数了,但是有些值又可以成功,请问是为什么啊?我看网上好多说是cin函数的问题?
你b变量是int类型 cin >> b只负责接收int 类型的数字。
应该是你输入了字母,输入有误,无法读取字母给b变量,导致cin错误而关闭,这样缓冲区里面还有这个字母数据,
下次循环还是从缓冲区里面取数据,不会让你重新输入,这样一直要从缓冲区里面取数据, 又一直无法读取字母给b变量。就死循环了。
解决方法是 在cin >> b 前用cin.clear();重置标志位和cin.sync(); 清空缓冲区
参考
https://blog.csdn.net/u010632547/article/details/105687659
如有帮助,望采纳!谢谢!
最好在cin>>b下面判断是否出错,如果读取出错,请清空缓存,重新开始读取,参考代码如下:
#include <iostream>
using namespace std;
int main()
{
for(int i=0;i<5;i++)
{
int b;
cin >> b;
if (cin.fail()) //读取失败
{
cin.clear(); //清空缓存
cin.sync();
i--; //忽略本次读取,重新读取数据
}
}
return 0;
}