2010-10-30 1848 views
4

如何使用find函数查找char数组中的char?如果我只是为了循环元音,那么我可以得到答案,但我被要求使用std :: find ..谢谢。C++如何使用find函数查找char数组中的char?

bool IsVowel (char c) { 

    char vowel[] = {'a', 'e', 'i', 'o', 'u'};    
    bool rtn = std::find(vowel, vowel + 5, c); 

    std::cout << " Trace : " << c << " " << rtn << endl; 

    return rtn; 
} 

回答

4
bool IsVowel (char c) { 

    char vowel[] = {'a', 'e', 'i', 'o', 'u'}; 
    char* end = vowel + sizeof(vowel)/sizeof(vowel[0]);    
    char* position = std::find(vowel, end, c); 

    return (position != end); 
} 
+0

太棒了。很酷..非常感谢... – 2010-10-30 19:16:36

2

std::find(first, last, value)返回一个迭代器,其在范围匹配value的第一个元素[第一,最后一个)。如果没有匹配,则返回last

特别是,std :: find不返回布尔值。为了获得你正在寻找的布尔值,你需要比较std :: find的返回值(没有将它转换为布尔值!)到last(即,如果它们相等,则不匹配)。

+0

我必须使用char :: iterator吗?我认为没有像char:iterator这样的东西,对吧?我应该使用什么样的迭代器?以及如何检查它是否结束?通常,如果它是一个字符串,我们可以像s.end()==那样做,但数组不会有.end()。 – 2010-10-30 19:14:51

+0

char *(指向char的指针)在这种情况下是一个迭代器。你的例子中的'end'是'元音+ 5'。当然,使用std :: vector或std :: string会更容易一些(或者较不复杂)。 – 2010-10-30 19:17:48

+0

谢谢,eq- ..。 – 2010-10-30 19:28:44