2 qrz112686 qrz112686 于 2016.04.19 10:44 提问

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个回答

caozhy
caozhy   Ds   Rxr 2016.04.20 08:27

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

qrz112686
qrz112686   2016.04.20 08:18

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

qrz112686
qrz112686   2016.04.20 08:19

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

oyljerry
oyljerry   Ds   Rxr 2016.04.19 12:18

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

qrz112686
qrz112686 s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun《int, int》(std::isspace)))); ,他显示错了,我现在只能用中文《》来显示了 。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!