我怎样才能看到char是否等于c ++中的字母?

时间:2014-09-21 23:40:40

标签: c++ char

if( !( *it >= 0x41 || *it <= 0x5A ) && !( *it >= 0x61 || *it <= 0x7A ) )

我试过这样的事情,但它没有抓到任何东西。

2 个答案:

答案 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()函数,但更改为使用它不会帮助您了解为什么您的代码不起作用。