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::transform
とstd::tolower
を組み合わせる方法が最も手軽です。ロケールに基づく変換のためstd::tolower
はロケールに敏感なオーバーロードも提供していますが、通常はデフォルトの「C」ロケールが利用されます。
See Also / 関連情報
- C++ 言語参照: https://ja.cppreference.com/w/cpp/string/byte/tolower
- C++
<algorithm>
ヘッダ: https://ja.cppreference.com/w/cpp/header/algorithm - C++ Lambda 式: https://ja.cppreference.com/w/cpp/language/lambda