限制只输入数字

Limit input to only numbers

本文关键字:数字 输入      更新时间:2023-10-16

这是我输入值的一部分,我想做的是只输入0-9,但是当我输入字母或任何无效的键时,他们的程序工作得很好,它要求重新输入。

无效输入,请重新输入:

然而,这次当我重新输入它时打印出来:[6.95324e-310 2 3 4 5]

下面是代码:
int main()
{
   int aSize=5;
   double aArray[aSize];
   double value;
   for(int i=0;i<aSize;i++)
   {
      cout<<"enter value of slot"<<i+1<<": ";
      cin>>value;
      if(cin.fail())
      {
         cin.clear();
         cin.ignore(numeric_limits<streamsize>::max(), 'n');
         cout<<"invalid input please re-enter: ";
         cin>>value;
      }
      else
      {
         aArray[i] = value;
         cout<<"value of aArray: "<<aArray[i];
      }

试试这个:

    for (int i = 0; i < aSize; i++)
    {
        cout << "enter value of slot" << i + 1 << ": ";
        cin >> value;
        while (cin.fail())
        {
            cin.clear();
            cin.ignore(numeric_limits<streamsize>::max(), 'n');
            cout << "invalid input please re-enter: ";
            cin >> value;
        }
        aArray[i] = value;
        cout << "value of aArray: " << aArray[i];
    }

修复代码流,不是所有路径都支持

int main() {
  int aSize=5;
  double aArray[aSize];
  double value;
  for(int i=0;i<aSize;i++) {
    cout<<"enter value of slot"<<i+1<<": ";
    cin>>value;
// repeat handling of failure
    while (cin.fail()) {
      cin.clear();
      cin.ignore(numeric_limits<streamsize>::max(), 'n');
      cout<<"invalid input please re-enter: "; 
// at this point we want to get back to fail
      cin>>value;
    }
    aArray[i] = value;
    cout<<"value of aArray: "<<aArray[i];
}