学习笔记-cin输入导致死循环

67 阅读1分钟

问题

在设置变量性别sex的值时,输入了3,按照原本的设置男为1,女为0,输入其他经过判断后应该跳过下面的代码,不再执行。

但奇怪的是,代码依然在执行,并且因为cin>>sex是写在循环内的,导致了死循环,而且后面的cin都不起作用了,不再给变量进行赋值了。

原因

sex变量设置的是bool数据类型,输入为3缓冲区类型转换有问题,导致cin的下标一直停在那里了

解决

重置缓冲区的错误标记+清空缓存区

cin.clear();//重置标记位
cin.syne();//清空缓冲区
//同时cin.fail()还可以看标志位  0正常 1不正常