Я имею:: ToLower против разницы станд :: TOLOWER
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)
компиляции. Благодаря!
Связанных/дубликат: http://stackoverflow.com/q/5270780/ (см второго ответа HTTP: // StackOverflow. com/a/5270970 /) – dyp
@dyp Итак, если 'std :: lower' нуждается в двух аргументах, как работает' std :: tolower (56) '? – hovo
'std :: tolower' перегружен, есть две функции (одна [функция из библиотеки C] (http://en.cppreference.com/w/cpp/string/byte/tolower) принимает один аргумент и [один function template] (http://en.cppreference.com/w/cpp/locale/tolower), который принимает два аргумента) с именем 'tolower' в пространстве имен' std'. В глобальном пространстве имен, если есть что-либо, тогда это только «библиотека» библиотеки C, которая принимает один аргумент. – dyp