Tôi có:: ToLower vs chênh lệch std :: ToLower
using namespace std;
vector<char> tmp;
tmp.push_back(val);
...
Bây giờ khi tôi thử
transform(tmp.begin(), tmp.end(), tmp.begin(), std::tolower);
Nó không biên dịch, nhưng điều này biên dịch:
transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower);
là gì vấn đề với std::tolower
? Nó hoạt động với một đối số, ví dụ: std::tolower(56)
biên dịch. Cảm ơn!
liên quan/trùng lặp: http://stackoverflow.com/q/5270780/ (xem câu trả lời thứ hai http: // stackoverflow. com/a/5270970 /) – dyp
@dyp Vì vậy, nếu 'std :: lower' cần hai đối số, cách' std :: tolower (56) 'hoạt động như thế nào? – hovo
'std :: tolower' bị quá tải, có hai hàm (một [hàm từ thư viện C] (http://en.cppreference.com/w/cpp/string/byte/tolower) lấy một đối số và [một function template] (http://en.cppreference.com/w/cpp/locale/tolower) có hai đối số) với tên 'tolower' trong không gian tên' std'. Trong không gian tên chung, nếu có bất cứ điều gì, thì nó chỉ là 'tolower' của thư viện C lấy một đối số. – dyp