c++ cin不能输入的问题

cin不能输入说明cin这个对象的状态出现问题了。
cin这个对象里边有个缓冲区结构(也就是流,流的意思可以想象成一个管子,数据从一头持续输入,从另一头持续流出,像水流一样),专门获取键盘输入。然后cout可以从这个缓冲区里边获取存在的数据.当然使用getline()方法和getch()方法也可以。
cin这个对象还有状态位标志,一共有四个,包括正常和错误(错误类型有三个)。
简单点理解就相似于平时你创建person对象,里边有一个数组数据(相当于cin对象的流),还有一个枚举结构,这个枚举结构有四个标志(相当于cin对象的状态位标志)。
cin对象的缓冲区不给你输入了就说明cin对象的状态出现了问题,即不是正常状态,这种情况发生的可能是因为你想往里边输入一个数字,但是你键盘上输入了一个字符,它的状态位标志就变为错误类型的了。
解决的办法也很简单,把状态位标志改成正常的就行了,cin就给你输入了,该状态位标志很简单,调用cin对象的clear()方法就行了,即cin.clear() 。
但是这样有一个问题,就是cin对象的缓冲区里边还有东西(你之前输入的),如果你要获取你最近键盘输入的数据,你得先把它取出来才能获取最近输入的数据(毕竟是流结构)。所以一般情况下你还得把这个流给清空了,使用的函数为:cin.sync() , 清除缓冲区。

你可能感兴趣的:(杂文,c++)