gpt4 book ai didi

c++ - 输入验证以确保只有数字 c++

转载 作者:搜寻专家 更新时间:2023-10-31 00:38:32 25 4
gpt4 key购买 nike

好吧,我正在尝试熟练使用指针,所以我正在尝试为用户输入编写输入验证,以确保正确处理任何非数字的内容。当我使用 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 个字符,以先发生者为准。如果有人输入了一百万个数字,可能会很烦人,但除此之外,应该可以解决问题。

当然,您还需要一个循环来再次读取数字,直到输入有效数字。

关于c++ - 输入验证以确保只有数字 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17982719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com