【发布时间】:2017-11-01 10:34:56
【问题描述】:
我想创建一个函数对象,将字符串字母转换为大写,以便我可以将该函子传递给 transform() - transform(string.begin(), string.end(), string.begin(), stringToUp()); 。我知道我可以做其他事情,这只是一个练习。这是我的代码有效,但我的问题是为什么它可以工作,因为我将stringToUp 传递给transform 而没有任何参数?
class stringToUp{
public:
int operator()(int ex) {
return toupper(ex); // ??
}
};
int main(){
string k("toupper");
transform(k.begin(), k.end(), k.begin(), stringToUp());
}
【问题讨论】:
-
“为什么它可以工作,因为我将 stringToUp 传递给没有任何参数的转换?”
std::transform这样做,不是你。 -
std::transform()调用您传递的对象的operator()。但是为什么不将std::toupper传递给std::transform()? -
@Peter 正如我所说,这只是了解函子如何工作的练习
标签: c++ string functor uppercase