c++ - 如何在C++中将字符串转换为int?

标签 c++ string int codeblocks

我正在创建一个电话注册程序来检查输入的电话号码是否有效。我已经尝试多次搜索谷歌并且想出了如何检查电话号码的长度以及它是否以“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/

相关文章:

c++ - 优化迭代器定义

c - 在 if 语句中使用 strcmp

iphone - 如何在 iPhone 上连接字符和字符串?

c - 为什么即使 s 更小,以下代码也打印 "S is Bigger"?

tsql - 将 nvarchar 值 'Internet Explorer 3 original' 转换为数据类型 int 时转换失败

c - 底数大于10的C扫描

c++ - Visual Studio 2008 Qt项目配置

c++ - 从数据库中选择客户信息并存储到 vector 中

c++ - 函数main(int argc, char *argv[])中的参数argv

string - Installshield 中的全局字符串