gpt4 book ai didi

c++ - 如何检查输入是否有效?

转载 作者:行者123 更新时间:2023-11-28 04:33:00 25 4
gpt4 key购买 nike

do{
std::cout << "Name? \n";
std::cin >> Name1;
getchar();
}while();

如何检查用户输入的是姓名而不是数字?我试过 cin.fail() 但它似乎不起作用。基本上我想做的就是在用户输入是字符时循环,比如: , 。 + - 等等...或数字(0、1、2、4...),如果有一种方法可以做到 while(Name1 != std::string)

最佳答案

正如其他人所建议的,您的问题可以用不同的难度来解决。

如果您将有效名称定义为不包含特殊字符或数字(即 +-. 0...9 等)的字符串,那么您可以编写一个函数来检查输入的字符串是否仅包含字母字符。一种方法是使用 std::isalpha

如果您已阅读 std::isalpha 的链接引用,您会看到它检查给定字符是否为字母字符。你也有方法的实现 count_alphas(const std::string& s)计算字符串中有多少个字符。

您可以查看引用 std::count_if here你需要包括 <algorithm>使用它。

int count_alphas(const std::string& s)
{
return std::count_if(s.begin(), s.end(), [](unsigned char c){
return std::isalpha(c);
});
}

使用这个方法,你可以完成你的代码如下

do{
std::cout << "Name? \n";
std::cin >> Name1;
getchar();
}while(Name1.length() != count_alphas(Name1));

如果条件为真,这意味着您的字符串中的字母字符少于字符串的长度,因此您的名称不是您定义的有效名称。

您还可以使用 std::find_if 而不是 std::count_if如果你找到一个非字母字符直接返回 false,你可以尝试自己实现。

如果您不习惯使用算法或 lambda,您可以存储您不喜欢的东西
不想在您的有效名称中出现在字符串 vector 中并遍历输入名称以查看是否包含 vector 的任何存储元素。如果是,则它现在是一个有效的名称。

关于c++ - 如何检查输入是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52380619/

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