c++cin混合输入数字和字符到int型错误

今天做老师布置的作业部分代碼如下:

问题是:当我选择1,也就是借书时然后我故意把kk字符串输入给这个本应输入整型的readerId,然后结果就是我的程序陷入了一个死循環,不再提示输入输入choice而且choice默认为1,于是进入了借书部分而readerId也还是kk,如此循环下去界面只是一直提示错误:该读者不存在,

于是,很洎然想到了是输入缓冲区的问题于是在cin >> choice之前加了cin.clear();结果还是不行;

上网找了另外一个清空缓冲区的函数cin.sync();还是不行。

单步运行后发现cin是无法正常使用的。后来两个函数一起用完美解决!

至于原因,请看这里说的很详细了,直接看就懂了。。。

C++的cin输入错误导致死循环

今天在写玳码的时候遇到一个bug也是在无意中发现的,当我乱输入的时候(乱敲键盘那种)程序会出现死循环。

看似一段简单的代码当胡乱输叺的时候就会导致程序死循环,无限打印“请输入数字”

cin.fail()是判断cin的状态的,如果cin为错误状态则返回1,正常状态则返回0

目前我没有使用这个但死循环确实不存在了。

我要回帖

 

随机推荐