我有过
using namespace std;
vector<char> tmp;
tmp.push_back(val);
...现在当我试着
transform(tmp.begin(), tmp.end(), tmp.begin(), std::tolower);它无法编译,但它会编译:
transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);std::tolower有什么问题?它只使用一个参数,例如,std::tolower(56)编译。谢谢!
发布于 2015-07-23 22:22:48
std::tolower有两个重载,并且不能为UnaryOperation解析,而C版本的::tolower没有。
如果您想使用std::tolower,您可以使用lambda作为
transform(tmp.begin(), tmp.end(), tmp.begin(), [](unsigned char c) {return std::tolower(c); });https://stackoverflow.com/questions/31590105
复制相似问题