什么' a' < = string [i]是什么意思?

时间:2014-03-12 04:28:01

标签: c++

我在看一个函数:

bool StringWrap::isAlpha() const {
   int sz = st.size();
   for (int i = 0; i < sz; i++) {
      if (!( ('a' <= st[i] && st[i] <= 'z')
            || ('A' <= st[i] && st[i] <= 'Z') ) ) {
         return false;
      }
   }
   return true;
}

在这种情况下,ststring。我想知道'a' <= st[i]的逻辑陈述是什么意思?当我想要做一个小于或等于比较时,我会想到数字,而不是字符。

1 个答案:

答案 0 :(得分:4)

('a' <= st[i] && st[i] <= 'z')

此表达式正在测试st[i]是否为小写字符。以下是所有ASCII字符:

 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~

这些是'a' <= st[i](“至少'a'”)为真的那些:

abcdefghijklmnopqrstuvwxyz{|}~

(请注意'a'以下的所有字符都被删除了。)

这些是st[i] <= 'z'(“最多'z'”)为真的那些:

 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz

(请注意'z'以上的所有字符都被删除了。)

最后,这两个条件都是真的:

abcdefghijklmnopqrstuvwxyz

顺便说一下,方法体可以简化为一行:

#include <algorithm>
#include <cctype>

bool StringWrap::isAlpha() const
{
    return std::all_of(st.begin(), st.end(), isalpha);
}