关于缓存清除问题
#include <iostream.h>int Input() //从键盘读取并进行缺省判断
{
int n,m=0;
label: n=cin.get(); //读取第一个字符进行判断
if(n=='\n') m=100; //若为回车,则缺省值为100
else while(n!='\n') //非回车,则将字符串转换为整数
{
if(!(n>'0'&&n<'9')) //判断输入是否合法,否则提示重新输入
{
cin.clear(); //清空缓存
char s[20];
cin.getline(s,20); //接受原输入数据
cout<<"非法输入,请重新输入:";
goto label; //跳转重新输入
}
m=10*m+int(n)-48; //将字符串转换为整数
n=cin.get(); //循环读取
}
return m; //返回输入值,若无则缺省100
}
void main()
{
cout<<"input";
int n=Input();
cout<<n;
}
我想在输入2esd时提示错误信息,然后重新输入。可是再输入3时。它显示的是21,请问如何能把一开始输入的2清除掉呢?