一、cin对非法输入的处理
int n; cin>>n;
上述语句中,如果用户输入一个字符,将发生错误,此时cin会进行以下几种处理:
1.不匹配的输入仍留在输入队列中
2.cin对象中的一个错误标记被设置
3.对cin方法的调用将返回false
因此输入错误时应使用以下步骤解决:
while(!(cin>>n)) //注意!(cin>>n)中的括号不能省略,输入错误时进入循环,直至输入正确
{
cin.clear(); //使用该方法清除错误标记
while(cin.get()!='\n'); //吸收输入队列中非法的输入,直至回车符出现
cout<<"请输入正确的值:";
}
二、cin对字符串的get()和getline()
C++中处理字符串有两种方式,一种是C风格的字符数组,一种是string类。
1.C风格的字符数组
C风格的字符数组表示字符串时必须以空字符结尾,即'\0'。
字符数组初始化:char a[10]="study" //隐式的包含结尾的空字符
通过cin输入时,将字符串读入到char数组中时,将自动加上结尾的空字符,因此长度为10的字符串需要长度为11的字符串数组才可以存储。
使用cin对char a[10]进行输入时,如果直接:cin>>a,则当键盘输入空格时,输入将判定为