我正在使用 g ++ 4.7 。
我想做的就是这个,
find_if(s.begin(), s.end(), isalnum);
其中isalnum
在cctype
中定义,s
是字符串。
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);
如何在不创建自己的功能的情况下使其工作?
答案 0 :(得分:8)
编译器在this function和this function之间消除歧义的麻烦。你想要第一个,你必须通过使用强制转换指定签名来帮助编译器:
find_if(s.begin(), s.end(), (int(*)(int))isalnum);
答案 1 :(得分:2)
这应该有用。
#include <algorithm>
#include <cctype>
auto result = std::find_if (begin(s), end(s), std::isalnum);
答案 2 :(得分:0)
这应该有效
#include <algorithm >
#include <cctype>
auto result = std::find_if(std::begin(s), std::end(s), isalnum) ;