C ++如何使用find函数在char数组中查找char?

时间:2010-10-30 19:03:18

标签: c++ arrays char

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

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; 
 }

5 个答案:

答案 0 :(得分:6)

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); 
 }

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

简化和纠正

inline bool IsVowel(char c) {
    return std::string("aeiou").find(c) != std::string::npos;
}

查看演示http://ideone.com/NnimDH

答案 3 :(得分:0)

使用:

size_t find_first_of ( char c, size_t pos = 0 ) const;

参考:http://www.cplusplus.com/reference/string/string/find_first_of/

答案 4 :(得分:-2)

寻找数组中字符的顺序-为什么将布尔值拖入其中。如果可以的话,给出一个简单明了的答案。

    #include <iostream>
    #include <stdio.h>
    using namespace std;
    //Position
    int posc(char suit[], char fc, int sz)
        {
            int i = 0;
            do
            {
                if (toupper(fc) == suit[i]) return i;
                else
                i = i + 1;
            } 
            while (i < sz);
            cout << "\n Character " << fc << " not available in list";
            return 99;
        }
    int main()
    {
        char suit[] = { 'S', 'D', 'C', 'H' };
        char fc;
        int res;
        int sz = size(suit);
        cout << "\n Enter a character: ";
        cin >> fc;
        res = posc(suit, fc, sz);
        cout << "\n Sequence no: " << res;
        return 0;
    }

添加了主要和提示装饰,只是为了显示可行的解决方案