#include <iostream.h>
void main(){
int year = 0 ;
while( year <1900 || year > 3000 ) {
cout << "请输入四位年份:" << endl;
cin >> year ;
if( cin.fail() ) { cin.clear(); cin.sync(); year = 0; }
if( year <1900 || year > 3000 ) cout << "输入错误,请输入1900~3000之内的年份!" <<endl;
}
}
由于year是int型,若输入的不是int型,则cin输入出错后,状态是不会改变的,所以会造成死循环,因此必须先清空标志位和清空缓存
cin.fail() //判断输入是否有错
cin.clear() //清空标志位
cin.sync(); //清空缓存区,还可以用fflush(stdin);也可以用cin.ignore(),但这个只清除一个字符,如果你输入了aa,还是会有问题的。
cin.ignore(255, '/n')