我正在创建一个电话注册程序来检查输入的电话号码是否有效。我已经尝试多次搜索谷歌并且想出了如何检查电话号码的长度以及它是否以“04”开头;似乎没有什么可以检查字符串是否可以无错误地转换为无符号整数。我当前的代码是:
bool Is_Valid(string phone) {
if (phone.length() == 10 && phone.substr(0,2) == "04") {
return 1;
} else {
return 0;
}
}
期望的结果是,如果用户输入一个长度为 10 个字符且以“04”开头的字符串,但该字符串中包含一个字母,则该函数将返回 false。同样,如果字符在一个十个字符长的字符串中输入,并且它以“04”开头并且没有字母,它将返回 true。谢谢。
最佳答案
如果将此类字符串转换为整数,您可能会遇到困难,因为它们具有前导零,转换时将被丢弃。
我建议 std::all_of
和 ::isdigit
来自标准库;
if (phone.length() == 10 && phone.substr(0, 2) == "04"
&& std::all_of(phone.begin(), phone.end(), ::isdigit)) // added
这行得通。记得包括 <algorithm>
和 <cctype>
.
请注意,它需要 C++11(或更新版本),由 -std=c++11
激活如果您使用的是 gcc。
如果 C++11 不可用,这个答案 https://stackoverflow.com/a/8889045/5118228解释如何推出您自己的测试器功能。
关于c++ - 如何在C++中将字符串转换为int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38908432/