std::ptr_fun: 3 个重载中没有一个可以转换所有参数类型 2C

我的代码如下:
std::string &ss_ltrim(std::string &s)
{
s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace))));
return s;
}
我不知道为什么会这样提示,是不是还需要添加什么设置和头文件么?

4个回答

这个是你的传入的数据类型不符合它的函数参数

qrz112686
TonyTsien s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun《int, int》(std::isspace)))); ,他显示错了,我现在只能用中文《》来显示了 。
4 年多之前 回复

不好意思,我发错了一句语句,应该是:s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace))));
我在别人的项目中发现这个没问题,但是我自己做测试的时候却编译报错,std::ptr_fun: 3 个重载中没有一个可以转换所有参数类型

s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun(std::isspace))));

std::isspace需要一个参数,但是你没有制定。你看人家可以,估计人家写的是一个没有参数的函数
参考:http://kingoal.iteye.com/blog/336258

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问