0

g++ 4.7を使用しています。

私がやろうとしているのはこれです、

find_if(s.begin(), s.end(), isalnum);

どこisalnumで定義されcctypesおり、文字列です。

logman.cpp:68:47: error: no matching function for call to ‘find_if(std::basic_string<char>::const_iterator, std::basic_string<char>::const_iterator, <unresolved overloaded function type>)’

ただし、これは機能しますが、

bool my_isalnum(int c) {
    return isalnum(c);
}

find_if(s.begin(), s.end(), my_isalnum);

独自の関数を作成せずにこれを機能させるにはどうすればよいですか?

4

3 に答える 3

8

コンパイラは、この関数この関数を明確にするのに問題があります。最初のものが必要な場合は、キャストで署名を指定して、ここでコンパイラを支援する必要があります。

find_if(s.begin(), s.end(), (int(*)(int))isalnum);
于 2012-11-07T03:02:00.447 に答える
2

これはうまくいくはずです。

#include <algorithm>
#include <cctype>
auto result = std::find_if (begin(s), end(s), std::isalnum);
于 2017-05-08T15:52:18.597 に答える