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

C++で文字列内の英字の大文字・小文字を切り替える方法

このプログラムは、文字列に含まれるすべての英字について、大文字と小文字を入れ替える(トグルする)処理を行います。C++の標準ライブラリには toupper()tolower() といった便利な関数が用意されており、同様の処理は簡単に実現できます。しかし本記事では、ASCIIコードの値を直接計算することで大文字・小文字を変換する方法を解説します。

アルゴリズム

START
    Step-1: char型の配列を宣言する
    Step-2: 各文字のASCII値が 'A'(65) 以上 'Z'(90) 以下かどうかを判定する
    Step-3: 各文字のASCII値が 'a'(97) 以上 'z'(122) 以下かどうかを判定する
END

toggleChars() 関数は、char型の配列を引数として受け取ります。続いてループで文字列を先頭から順に走査し、各文字のASCII値が 'A'〜'Z' の範囲(大文字)にあるか、'a'〜'z' の範囲(小文字)にあるかを判定します。大文字であれば小文字へ、小文字であれば大文字へと変換します。

ASCIIコードでは、同じ英字の大文字と小文字の差は常に一定('a' - 'A' = 32)であるため、この差分を加算・減算するだけで変換が可能です。数字や記号など、英字以外の文字はそのまま維持されます。

サンプルコード

#include<iostream>
using namespace std;
void toggleChars(char str[]){
    for (int i=0; str[i]!='\0'; i++){
        if (str[i]>='A' && str[i]<='Z')
            str[i] = str[i] + 'a' - 'A';
        else if (str[i]>='a' && str[i]<='z')
            str[i] = str[i] + 'A' - 'a';
    }
}
int main(){
    char str[] = "ajay@kumar#Yadav";
    cout << "String before toggle::" << str << endl;
    toggleChars(str);
    cout << "String after toggle::" << str;
    return 0;
}

このサンプルでは、入力された文字列に小文字・大文字・記号が混在しています。toggleChars() 関数を実行すると、英字部分だけが大文字・小文字で入れ替わり、@# などの記号は元のまま出力されます。

実行結果

String before toggle::ajay@kumar#Yadav
String after toggle::AJAY@KUMAR#yADAV
  1. 【C++入門】文字列からアルファベット以外の文字をすべて削除する方法

    C++における文字列とは、ヌル文字(\0)で終端される1次元の文字配列のことです。文字列には、アルファベットだけでなく、数字や特殊記号なども含まれる場合があります。本記事では、文字列からアルファベット以外の文字をすべて削除するC++プログラムを紹介します。サンプルプログラム#include <iostream> using namespace std; int main() {     char str[100] = "String@123!!";     int i, j; &nb

  2. C++で文字列の長さを求める方法:基本テクニックとstrlen()関数の使い方

    C++における文字列とは、ヌル文字(\0)で終端される1次元の文字配列のことです。文字列の長さとは、このヌル文字より前に存在する文字数を指します。例えば、次のような文字列を考えてみましょう。char str[] = The sky is blue; 上記の文字列に含まれる文字数 = 15それでは、文字列の長さを求めるプログラムを見ていきましょう。例1:whileループを使って文字数をカウントする方法#include<iostream> using namespace std; int main() {    char str[] = Apple; &n