c ++只有字母和空格输入验证

时间:2017-04-08 20:52:41

标签: c++ validation input

我的目标是验证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;
                }
            }
    }

1 个答案:

答案 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 == ' '); 
    }); 
}