注册 登录
编程论坛 C++教室

关于缓存清除问题

lqqnjust 发布于 2008-10-05 10:34, 1671 次点击
#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清除掉呢?
4 回复
#2
blueboy820062008-10-05 12:00
竟然是要接受字符 n 为什么要定义为 int ...
#3
ml2325282008-10-05 12:57
system("cls")//如果是windows 可以有cls清屏
#4
lqqnjust2008-10-08 08:39
回复 2# blueboy82006 的帖子
我需要int型的.但输入时可能会有错误输入.用atoi函数可以增加容错型,防止死循环,同时也可判断第一个字符是否是回车
#5
lqqnjust2008-10-08 08:41
我已经换了一种方法来做,把这个问题跳过去了
1