:: tolower vs std :: tolower的区别

时间:2015-07-23 14:18:59

标签: c++ stl std stl-algorithm

我有

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)编译。谢谢!

1 个答案:

答案 0 :(得分:3)

std::tolower有两个重载,无法解析C版UnaryOperation没有的::tolower

如果您想使用std::tolower,可以使用lambda作为

transform(tmp.begin(), tmp.end(), tmp.begin(), [](unsigned char c) {return std::tolower(c); });