检查字符串是否为 int 的函数不起作用
function to check whether a string is an int not working
我一直在创建一个程序来检查 phone 号码是否有效,如果 phone 号码以“04”开头但长度为十个字母,我的程序将返回 true。以下是检查字符串是否为无符号整数的函数代码:
bool Is_Int(string phone) {
if (all_of(phone.begin(), phone.end(), ::isdigit)) {
return true;
} else {
return false;
}
}
这是检查 phone 号码是否有效的代码:
bool Is_Valid(string phone) {
if (phone.length() == 10 && phone.substr(0,2) == "04" || phone.substr(0,2) == "08" && Is_Int(phone)) {
return true;
} else {
return false;
}
}
这是主要程序代码:
int main()
{
cout << "Enter Phone Number: ";
string PhoneNumber;
getline(cin, PhoneNumber);
if (Is_Valid(PhoneNumber)) {
cout << "authenticated" << endl;
}
return 0;
}
错误是,如果我输入“04abcdefgh”,它会打印 authenticated
做两个括号。 &&
在 ||
之前求值,因此如果 phone.length() == 10 && phone.substr(0,2) == "04"
为真
则 if 为真
bool Is_Valid(string phone) {
if (phone.length() == 10 && (phone.substr(0,2) == "04" || phone.substr(0,2) == "08") && Is_Int(phone)) {
return true;
} else {
return false;
}
}
像评论中提到的rakete1111函数可以简化为:
bool Is_Valid(string phone) {
return (phone.length() == 10 && (phone.substr(0,2) == "04" || phone.substr(0,2) == "08") && Is_Int(phone));
}
也许,正则表达式更清楚?
bool Is_Valid(string phone) {
return QRegularExpression(R"(^0(4|8)\d{8}$)").match(phone).hasMatch();
}
- 字符必须是 0
- 字符可能是 4 或 8
- 最后8位
我一直在创建一个程序来检查 phone 号码是否有效,如果 phone 号码以“04”开头但长度为十个字母,我的程序将返回 true。以下是检查字符串是否为无符号整数的函数代码:
bool Is_Int(string phone) {
if (all_of(phone.begin(), phone.end(), ::isdigit)) {
return true;
} else {
return false;
}
}
这是检查 phone 号码是否有效的代码:
bool Is_Valid(string phone) {
if (phone.length() == 10 && phone.substr(0,2) == "04" || phone.substr(0,2) == "08" && Is_Int(phone)) {
return true;
} else {
return false;
}
}
这是主要程序代码:
int main()
{
cout << "Enter Phone Number: ";
string PhoneNumber;
getline(cin, PhoneNumber);
if (Is_Valid(PhoneNumber)) {
cout << "authenticated" << endl;
}
return 0;
}
错误是,如果我输入“04abcdefgh”,它会打印 authenticated
做两个括号。 &&
在 ||
之前求值,因此如果 phone.length() == 10 && phone.substr(0,2) == "04"
为真
bool Is_Valid(string phone) {
if (phone.length() == 10 && (phone.substr(0,2) == "04" || phone.substr(0,2) == "08") && Is_Int(phone)) {
return true;
} else {
return false;
}
}
像评论中提到的rakete1111函数可以简化为:
bool Is_Valid(string phone) {
return (phone.length() == 10 && (phone.substr(0,2) == "04" || phone.substr(0,2) == "08") && Is_Int(phone));
}
也许,正则表达式更清楚?
bool Is_Valid(string phone) {
return QRegularExpression(R"(^0(4|8)\d{8}$)").match(phone).hasMatch();
}
- 字符必须是 0
- 字符可能是 4 或 8
- 最后8位