如何使用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;
}
答案 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;
}
答案 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;
}
添加了主要和提示装饰,只是为了显示可行的解决方案