好的,我正在尝试擅长使用指针,因此我正在尝试为用户输入编写输入验证,以确保正确处理任何非数字的内容。当我使用 isdigit() 时,它对我不起作用。当我输入字母表时,我仍然遇到异常。有什么建议么?谢谢。看一下这个:
#include<iostream>
#include<algorithm>
#include<string>
#include<cctype>
using namespace std;
void EnterNumbers(int * , int);
int main()
{
int input = 0;
int *myArray;
cout << "Please enter the number of test scores\n\n";
cin >> input;
//Allocate Array
myArray = new int[input];
EnterNumbers(myArray,input);
delete[] myArray;
return 0;
}
void EnterNumbers(int *arr, int input)
{
for(int count = 0; count < input; count++)
{
cout << "\n\n Enter Grade Number " << count + 1 << "\t";
cin >> arr[count];
if(!isdigit(arr[count]))
{
cout << "Not a number";
}
}
}
如果你测试if (!(cin >> arr[count])) ...
反而 -isdigit(arr[digit])
测试是否的值arr[digit]
是数字的 ASCII 代码[或者可能匹配日语、中文或阿拉伯语(即,作为阿拉伯脚本字体,而不是像我们的“阿拉伯”字体那样的 0-9)数字]。所以如果你输入 48 到 57,它会说没问题,但如果你输入 6 或 345,它会抱怨它不是数字......
一旦发现非数字,您还需要退出或清除输入缓冲区中的“垃圾”。cin.ignore(1000, '\n');
将读取到下一个换行符或 1000 个字符,以先发生者为准。如果有人输入了一百万位数字,可能会很烦人,但除此之外,应该可以解决问题。
当然,您还需要一个循环来再次读取该数字,直到输入有效的数字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)