我的目标是验证c ++输入它只包含小写和大写字母以及空格。我可以不用for循环吗?我目前的代码是:
bool validateInput()
char c;
string result;
cin >> result;
for (int i = 0; i < result.length(); i++) {
c = result.at(i);
if ( !( ( c >= 'a' && c <= 'z' ) || ( c >= 'A' && c <= 'Z' ) || c == ' ' ) )
{
return false;
}
}
}
答案 0 :(得分:1)
你可以在没有for循环的情况下做到这一点,虽然你显然仍然需要使用循环,我想现代的C ++方式是使用std::find_if
,(你也可以使用std::none_of
正如@NathanOliver指出的那样,它包装std::find_if
并返回一个布尔值而不是一个迭代器。使用std::isalpha
也是一个好主意,部分原因是字符集可能没有按字母顺序排列成十进制值的字母字符,部分原因是它更容易编写: - )
bool validateInput()
{
std::string result;
std::cin >> result;
return std::none_of(result.begin(), result.end(), [](const char& c)
{
return !(std::isalpha(c) || c == ' ');
});
}