if( !( *it >= 0x41 || *it <= 0x5A ) && !( *it >= 0x61 || *it <= 0x7A ) )
我试过这样的事情,但它没有抓到任何东西。
答案 0 :(得分:2)
标准库函数std::isalpha
用于此:
if( !std::isalpha(static_cast<unsigned_char>(*it))
它测试角色是否是一个字母。请注意,在调用std::isalpha
is indeed needed.
答案 1 :(得分:2)
考虑表达式
*it >= 0x41 || *it <= 0x5A
对于任何值,此表达式为true
。考虑一个更简单的版本:
x > 5 || x < 10
每个值x
大于5或小于10(或两者)。这些测试都没有任何价值。
你可能想要
*it >= 0x41 && *it <= 0x5A
检查你的角色是否大于'A'且小于'Z'。您还必须对测试的其他部分进行类似的更改。
当然,更好的方法是使用标准的isalpha()
函数,但更改为使用它不会帮助您了解为什么您的代码不起作用。