将一个字符与一组字符c ++进行比较

时间:2011-04-06 10:46:38

标签: c++

有没有办法将单个字符与一组字符进行比较?

例如:

char a;
if(a in {'q','w','e','r','t','y','u'})
      return true;
else return false;

我需要这样的东西。

4 个答案:

答案 0 :(得分:15)

std::string chars = "qwertyu";
char c = 'w';
if (chars.find(c) != std::string::npos) {
  // It's there
}

或者您可以使用一组 - 如果您需要经常查找更快的内容。

std::set<char> chars;
char const * CharList = "qwertyu";
chars.insert(CharList, CharList + strlen(CharList));
if (chars.find('q') != chars.end())  {
  // It's there
}
编辑:正如Steve Jessop的建议:您也可以使用chars.count('q')代替find('q') != end()

您也可以使用当前字符的位图(例如vector<bool>),但这过于复杂,除非您每秒执行几百万次。

答案 1 :(得分:11)

使用strchr:

return strchr("qwertyu", a);

没有必要写,“如果x返回true则返回false,”只是,“返回x”。

答案 2 :(得分:0)

const char[] letters = {...};
char a = ...;
bool found = false;
for(int i = 0; i < sizeof(letters); i++) {
    if (letters[i] == a)
        found = true;
}
if (found) {
    ...
} else {
    ...
}

答案 3 :(得分:0)

std::string s="qwertyu";
return s.find(a) != std::string::npos;