比较一个字符与c ++中的各种字符类

时间:2011-02-04 06:17:35

标签: c++ comparison character

问题是我想逐个比较字符串中的字符:对于每一个字符,它是否属于字母表;它是小写还是大写。我怎么能这样做?

这很好,如果我想比较(+ - * ^),就像没有标准功能一样。 请帮助我

2 个答案:

答案 0 :(得分:5)

#include <cctype>
#include <string>

...

for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
    if (std::isalpha(*i))
        handle_alphabetic_character(*i);
    else
        handle_non_alphabetic_character(*i);

编辑新要求:

要查找任意字符集中的字符,您可以在答案中使用str :: find()作为James MeNellis文档,或者只是...

#include <cstring>

for (std::string::const_iterator i = s.begin(); i != s.end(); ++i)
    if (std::strchr("*+{\\&", *i))
        handle_matching_character(*i);
    else
        handle_non_matching_character(*i);

答案 1 :(得分:2)

您可以轻松使用std::find算法:

const std::string alphabet = "abcdefghijklmnopqrstuvwxyz";

bool is_in_alphabet 
           = std::find(alphabet.begin(), alphabet.end(), 'c') != alphabet.end();

或者,如果字母字符已排序,您可以使用std::binary_search,但除非您在字母表中有大量字符(即,大于26),线性搜索可能会快得多。字符很小,可以快速比较。