mam:: tolower vs różnicy std :: TOLOWER
using namespace std;
vector<char> tmp;
tmp.push_back(val);
...
Teraz, gdy próbuję
transform(tmp.begin(), tmp.end(), tmp.begin(), std::tolower);
To nie skompilować, ale kompiluje:
transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
Jaka jest problem z std::tolower
? Działa z jednym argumentem, np. std::tolower(56)
kompiluje. Dzięki!
związane/dwóch egzemplarzach: http://stackoverflow.com/q/5270780/ (patrz Druga odpowiedź http: // stackoverflow. com/a/5270970 /) – dyp
@dyp Więc jeśli 'std :: lower' potrzebuje dwóch argumentów, jak to działa' std :: tolower (56) '? – hovo
'std :: tolower' jest przeciążone, są dwie funkcje (jedna [funkcja z biblioteki C] (http://en.cppreference.com/w/cpp/string/byte/tolower) przyjmująca jeden argument i [jeden szablon funkcji] (http://en.cppreference.com/w/cpp/locale/tolower), który przyjmuje dwa argumenty) o nazwie 'tolower' w przestrzeni nazw' std'. W globalnej przestrzeni nazw, jeśli jest cokolwiek, to tylko biblioteka 'tolower' biblioteki C pobiera jeden argument. – dyp