std::transform(str.begin(), str.end(), str.begin(), ::tolower);
というのを使うと一行で書けるらしい。
#include <algorithm> #include <iostream> #include <string> int main(){ std::string data = "jAnUaRY"; std::cout << data << std::endl; // 文字列中のすべての大文字を小文字に変換 std::transform(data.begin(), data.end(), data.begin(), ::tolower); std::cout << data << std::endl; return 0; }
出力はこうなる。
jAnUaRY january
transformの第4引数を自分で書く場合は以下のようになるらしい。
char easytolower(char in){ if(in<='Z' && in>='A') return in-('Z'-'z'); return in; } std::transform(data.begin(), data.end(), data.begin(), easytolower);