gpt4 book ai didi

c++ - C++ 中的整数验证

转载 作者:行者123 更新时间:2023-11-28 06:29:05 25 4
gpt4 key购买 nike

您好亲爱的程序员,我正在用 C++ 编写一个系统,我已经有一段时间没有使用这种语言了,我已经定义了一个函数,在该函数中将询问一组问题以获得特定数据,因此输入会进行验证,当我想验证一个整数以检查输入的值是否只是数字时,不知何故它不起作用,我写了一个函数“isnumber”来检查该值是否为数字,但不知何故即使我输入数字它转到我的 if 条件并找到没有数字。我希望我没有犯一个非常愚蠢的错误,但任何考虑都会受到赞赏。这是代码;

// validation Against Numbers 

bool isNumber(int a)
{
if (isdigit(a)){

return true;

}

else {

return false;

}
}

//收集公寓详细信息

 cout << "Number Of Bedrooms:" << endl;

cin >> number_of_bedrooms;

if (isNumber(number_of_bedrooms) == false ) {

cout << "Please Do Enter Numbers Only" << endl;
cin.clear();

}

else if (number_of_bedrooms != '2' || number_of_bedrooms != '3' || number_of_bedrooms != '4') {

cout << "The Number of Bedrooms Is Limited To 2, 3 or 4 !" << endl;
cin.clear();

}

最佳答案

在 C++ 中,您可以取消 isdigit打电话而不是做类似的事情(未经测试):

int num;
if (std::cin >> num)
{
// Read a number from cin
std::cout << "Yay" << std::endl;
}
else
{
// Grr
std::cout << "failed to read number" << std::endl;
std::cin.clear(); // Clears error state flags
}

C++ 运算符 << on in streams 读取格式化输入,因此它将您输入的数字转换为整数,如果失败则设置内部错误状态标志。

如果不想使用 isdigit,则需要读入单个字符(因为 isdigit 将单个字符/int 作为其参数):

char ch;
std::cin >> ch;
if (std::cin.good() && isdigit(ch))
{
// Yay
}

仍然检查 std::cin 也是一个好主意即使在读取单个字符时仍然很好,因为调用仍然可能失败(也许用户发送了 EOF 信号)。

关于c++ - C++ 中的整数验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27963539/

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