列出没有元音的单词时出错

时间:2013-10-02 09:50:49

标签: c++

您好我收到错误Error'unsigned int std::basic_string<char,std::char_traits<char>,std::allocator<char>>::find(_Elem,unsigned int) const' : cannot convert parameter 2 from 'bool (__cdecl *)(char)' to 'const std::basic_string<char,std::char_traits<char>,std::allocator<char>> &' 在尝试编译此代码时,其目标是从MyWords列表中删除任何包含元音的单词,然后打印出没有元音的单词。

3 个答案:

答案 0 :(得分:2)

std::string::find将子字符串作为输入并返回第一个字符匹配的位置。 http://en.cppreference.com/w/cpp/string/basic_string/find

我认为不能直接在这里应用。

相反,请尝试:

bool vowelPresent = false;
for ( int i = 0; i < word1.size(); i++ )
  if ( isVowel( word1[i] ) ) {
    vowelPresent = true;
    break;
  }

if ( !vowelPresent ) {
  cout << word1 << endl;
}

或者如Adam建议的那样,您可以使用std::find_if标题中的<algorithm>函数。 using std::find_if with std::string

答案 1 :(得分:1)

这一行是问题所在:

if (word1.find(isVowel) != std::string::npos) {

您无法“找到”string内的函数指针。 我建议使用std::string::find_first_of,如下所示:

if (word1.find_first_of("aeiouAEIOU") != std::string::npos) {

使用您当前的方法,您可能会考虑std::find_if哪些 采用谓词函数。你可以使用它:

if (std::find_if(std::begin(word1), std::end(word1), isVowel) != std::end(word1) ) { // ...

答案 2 :(得分:0)

如果您想使用isVowel作为搜索谓词,则可以使用std::find_ifhttp://www.cplusplus.com/forum/beginner/393/