C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++入門】std::stringをすべて小文字に変換する方法

この記事では、C++の文字列(std::string)に含まれるすべての英字を小文字に変換する方法を解説します。この処理を実現するには、<algorithm> ヘッダーで提供されている transform 関数を使用します。

transform関数による小文字変換の仕組み

transform 関数には、主に次の4つの引数を渡します。

  • 変換対象の文字列の先頭イテレータ(begin()
  • 変換対象の文字列の末尾イテレータ(end()
  • 変換結果を格納する出力先の先頭イテレータ
  • 各文字に適用する関数(ここでは ::tolower

第4引数に ::tolower を指定すると、範囲内のすべての大文字が小文字へと変換されます。入力元と出力先に同じ文字列の begin() を指定することで、元の文字列をその場で書き換えることができます。

なお、同じ手法は大文字変換にも応用できます。第4引数を ::toupper に変更するだけで、文字列をすべて大文字に変換可能です。

サンプルコード

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    string my_str = "Hello WORLD";

    cout << "Main string: " << my_str << endl;
    transform(my_str.begin(), my_str.end(), my_str.begin(), ::tolower);

    cout << "Converted String: " << my_str;
}

実行結果

Main string: Hello WORLD
Converted String: hello world

注意点

::tolower::toupper は基本的にASCII英字(A〜Z、a〜z)を対象とした関数です。そのため、日本語などのマルチバイト文字やアクセント付き文字は正しく変換されない場合があります。また、ロケールによって挙動が変わる可能性もあるため、国際化対応が必要なアプリケーションでは注意してください。

  1. C#で大文字を小文字に変換する方法【ToLower()メソッドの使い方】

    C#で大文字を小文字に変換するには、ToLower()メソッドを使用します。このメソッドは、文字列内のすべての英字を小文字に変換した新しい文字列を返します。 変換元の文字列を用意する まず、例として次のような大文字の文字列が格納された変数があるとします。 str = TIM; このように大文字で構成された文字列を、後ほど小文字へ変換していきます。 ToLower()メソッドで小文字に変換する 上記の大文字の文字列を小文字に変換するには、ToLower()メソッドを呼び出すだけです。 Console.WriteLine(Converted to LowerCase : {0}, str

  2. C#で小文字を大文字に変換する方法

    C#で文字列内の小文字を大文字に変換するには、ToUpper()メソッドを使用します。このメソッドは、文字列内のすべての英字を対応する大文字に変換した新しい文字列を返します。基本的な使い方たとえば、次のような小文字の文字列があるとします。str = david;この文字列を大文字に変換するには、ToUpper()メソッドを以下のように呼び出します。Console.WriteLine(Converted to UpperCase : {0}, str.ToUpper());実行結果は「DAVID」となり、元の文字列「david」がすべて大文字に変換されて表示されます。サンプルコード以下は、C#で