程序接受输入的第一个字符,即使它无效

时间:2021-05-11 15:09:30

标签: c++ arrays error-handling stream stringstream

我目前正在创建一个程序,在程序开始时,它会要求用户输入数组的大小。它接受数字并使字符串和字符无效,但是当用户输入“5 测试输入”时,它接受第一个字符,即 5。

这是我当前用于验证输入的代码:

int array[1000];
int arrsize;
stringstream convert;
string arraysize1;

again:
cout << "\nEnter the Array Size: ";
cin >> arraysize1;
  
//Conversion
strcpy(arraysICE, arraysize1.c_str()); 
//Validating each array element
for (int i = 0; i < arraysize1.length(); i++){
    //If the program detects a non-numeric input, it will ask the user to input again
    if (!(isdigit(arraysICE[i])) || ((isspace(arraysICE[i])))){
      cout << "Invalid input! Please try again!" << endl;
      cin.clear();
      cin.ignore(1000, '\n');
      goto again;
    }
    //If it is a numeric input, the input will become the array size
    else
      continue;
    }
  convert << arraysize1;
  convert >> arrsize;
  
  array[arrsize];

每当用户输入字符或字符串时,程序都会使输入无效,例如“Test 5”、“Test”、“T3st”和“5Test”,但是当用户在第一个字符处输入数字时,继续字符是一个空格,它接受第一个数字,但不应该。

我知道如果我想创建动态列表,我应该使用 LinkedList,但是我们的教授要求我们使用 Array。抱歉,如果我违反了此处的某些规则,我是 Stack Overflow 的新手。

0 个答案:

没有答案