文字列を小文字に変換

C++:
文字列を小文字に変換

How to: / 方法

#include <iostream>
#include <string>
#include <algorithm>

int main() {
    std::string text = "こんにちは、C++ World!";
    std::transform(text.begin(), text.end(), text.begin(), 
        [](unsigned char c){ return std::tolower(c); });

    std::cout << text << std::endl;
    return 0;
}

// 出力: こんにちは、c++ world!

Deep Dive / 深掘り

歴史的にC++では<cctype>ヘッダにあるstd::tolower関数を使用して文字を小文字に変換してきました。このアプローチはC言語由来です。C++11からstd::transformを使う方法が推奨されます。これは範囲ベースの操作を容易にし、ラムダ式によるカスタマイズも可能にします。代替手段として、自作のループで変換を行うこともできますが、std::transformstd::tolowerを組み合わせる方法が最も手軽です。ロケールに基づく変換のためstd::tolowerはロケールに敏感なオーバーロードも提供していますが、通常はデフォルトの「C」ロケールが利用されます。

See Also / 関連情報