读书人

否定器有关问题

发布时间: 2013-01-11 11:57:35 作者: rapoo

否定器问题
我想使用否定器,而不是notSpace,于是出现了如下的错误。请问何解?


#include <string>
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>
using namespace std;

bool isSpace(char c)
{
return isspace(c);
}

bool notSpace(char c)
{
return !isspace(c);
}

vector<string> split(const string& str)
{
typedef string::const_iterator iter;
vector<string> ret;

iter i=str.begin();
while(i!=str.end())
{
//error C2664: 'std::find_if' : cannot convert parameter 3 from 'std::unary_negate<_Fn1>' to 'std::unary_negate<_Fn1>'
]i=find_if(i,str.end(),not1(isSpace));
iter j=find_if(i,str.end(),isSpace);
if(i!=str.end())
{
ret.push_back(string(i,j));
}
i=j;
}
return ret;
}

void print(const vector<string>& vec)
{
vector<string>::const_iterator it=vec.begin();
for(;it!=vec.end();++it)
{
cout<<*it<<endl;
}
}

int main()
{
string s="hello minmin and kaikai";
cout<<s<<endl;
vector<string> v=split(s);
print(v);

return 0;
}

[解决办法]
i=find_if(i,str.end(),not1(isSpace));

改为
i=find_if(i,str.end(),not1(ptr_fun(isSpace)));

读书人网 >C++

热点推荐