::tolower vs std::tolower difference

::tolower vs std::tolower difference

本文关键字:tolower difference vs std      更新时间:2023-10-16

我有

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

std::tolower有两个过载,它不能解决UnaryOperation,其中C版本::tolower没有。

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

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