C++ 中 cin缓冲的清除

       cin是istream的一个对象,而istream继承自basic_istream,所以cin拥有basic_istream的所有成员。因为cin是一个输入流,一些问题只能在运行台的时候才能够出现,比如当要求给一个整型复制的时候,输入的有可能是其他类型或者溢出了,这样在运行台的时候就会导致程序退出,或者造成其他方面的影响,比如如果输入的过多了,那除了赋给变量的 那些输入之外还有剩余的,这些剩余的输入将残留在输入缓存中,就会导致在下面需要输入的时候不再接受输入,而直接从缓存中获得,这就要求我们有这样的判断,判断是否输入正确,如果输入不正确就要进行相应的处理。

        首先判断cin流是否正常,可以通过if(cin),来判断是不是类型正确,输入合法,cin.fail(),判断是否失败,如果失败,当前操作无影响,接下来的输入则不能进行,设置failbit为1,cin.bad()判断流是否破坏,如果流已经破话,那么任何输入也无效了。cin.good(),判断是否正常,如果正常,接下来的操作还能继续。

      如果确定cin不正常,那就得把缓存中的数据清空,还得把各个标志位清除,清除标志位的函数为cin.clear(),清除缓存可以使用flushall(),将所有缓存清除也可以把指定的流缓存清除,清除指定缓存流的方法是fflush(stdin);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值