cin循环输入时,程序卡住了?

大佬们,我想请问一下,就是我用一个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;
}