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

C++で文字列を大文字に変換する方法

本記事では、C++を使って文字列を大文字に変換するプログラムを紹介します。ASCIIコードの仕組みを利用することで、ライブラリ関数に頼らずとも簡単に大文字への変換が可能です。

大文字変換の基本原理

ASCIIコードでは、小文字の英字「a」〜「z」は97〜122、「A」〜「Z」は65〜90という連続した値に割り当てられています。両者の差はちょうど32であるため、小文字のASCII値から32を引けば、対応する大文字へと変換できます。

サンプルコード

#include<iostream>
#include<string.h>
using namespace std;

int main() {
    char s[30] = "This_is_string";
    int i;

    for(i = 0; i < strlen(s); i++) {
        if(s[i] >= 97 && s[i] <= 122) {
            s[i] = s[i] - 32;
        }
    }
    cout << "The String in Uppercase = " << s;
    return 0;
}

実行結果

このプログラムを実行すると、次のような出力が得られます。

The String in Uppercase = THIS_IS_STRING

プログラムの解説

大文字への変換処理は、main()関数内で行われています。まず、char型の配列 s[30] を宣言し、変換対象となる文字列 "This_is_string" を格納します。

次に、forループで文字列を先頭から1文字ずつ走査します。各文字に対してif文による判定を行い、ASCII値が97以上122以下の場合、つまり小文字の英字である場合にのみ、32を減算して大文字へ変換します。すでに大文字や記号(アンダースコアなど)である文字はそのまま維持されます。

for(i = 0; i < strlen(s); i++) {
    if(s[i] >= 97 && s[i] <= 122) {
        s[i] = s[i] - 32;
    }
}

補足:toupper()関数を使った別の方法

上記のように手動でASCII値を操作する方法以外にも、標準ライブラリの toupper() 関数(<cctype> ヘッダ)を使用すれば、より簡潔かつ安全に記述できます。

#include<iostream>
#include<cctype>
#include<string>
using namespace std;

int main() {
    string s = "This_is_string";
    for(char &c : s) {
        c = toupper(c);
    }
    cout << "The String in Uppercase = " << s;
    return 0;
}

実務では可読性や移植性の観点から toupper() の使用が推奨されますが、ASCIIコードの構造を理解するうえで、前者の手法は非常に良い学習材料となります。

  1. C++でint型をstring型に変換する方法を解説

    整数(int)を文字列(string)に変換したい場合、いくつかの方法があります。まずはC言語由来のitoa関数を使う方法から見ていきましょう。 itoa関数を使う方法 itoaは「integer to ASCII」の略で、整数値を文字列に変換するC言語の関数です。以下のように使用します。 例 #include<iostream> int main() { int a = 10; char *intStr = itoa(a); string str = string(intStr); cout << str; } 出力 このコードを実行す

  2. C#で文字列をタイトルケース(Title Case)に変換する方法

    タイトルケース(Title Case)とはタイトルケースとは、書籍のタイトルや記事の見出しなどで使われる表記スタイルの一つで、主要な単語の頭文字を大文字にする形式です。英語圏では、出版作品や芸術作品のタイトルを表記する際に広く採用されています。タイトルケースでは原則としてすべての単語の先頭を大文字にしますが、冠詞や短い前置詞・接続詞といった「補助的(マイナー)」な単語は、タイトルの先頭または末尾に置かれる場合を除いて小文字のままになります。C#では、TextInfoクラスのToTitleCaseメソッドを使うことで、文字列を簡単にタイトルケースへ変換できます。以下の例に示す実装では、出力される