当cin函数输入错误的时候,cin里面有个函数可以自动检测到输入错误,若想继续输入便要清楚掉这个错误。可以利用函数cin.rdstate()函数来读取错误的标识符看看。
#include
int number;
cin>>number;
cout<<"first input"< cout< cin>>number; cout<<"end input!"< system("pause"); return 0;} 扩展资料 c++中的cin函数语法 C++中的cin函数和C语言的scanf函数同理,均为从键盘中接收输入内容。 基本格式:cin>>要输入的内容; cin函数输入遇到空格,TAB键,回车也会终止输入 例如:想要输入zhang san cin>>str;那么str只会接收zhang这个字符串,遇到空格自动结束输入。 C++中提供cin.getline(str,50),此时只遇到回车才会结束输入,那么str中存储了zhang san这个完整的字符串。
实际测试了一下楼上大神的解答思路发现一些问题:
输入字母开头时 例如a123 b456 代码会报错“Bad input”
但当数字开头连接字母时 例如123a 4bc 代码正常运行 不会报错
大家可以试试
if(!cin)判断是否输入正确,如果输入错误的类型 比如你想输入 int类型 结果输入了char 则会出现cin输入错误
fail() 被设定为真 failbit被设定 cin被标记错误 不可用( 意思是 出现不匹配 )然后就得用clear()清除错误状态 就是清除错误状态 (也就是把failbit设置为0)然后还得用 while(cin.get()!='\n')
continue;
吸收缓冲区 也就是错误字符后面的字符之类的 知道换行符 例如想输入 123 结果输入123ab456。。。就用上面的做法 解决了 发现cin又可用了。。。
非常感谢,在读C++ Primer也碰到此问题