C++ で文字列の最初の文字を大文字にする

Neha Imran 2023年10月12日
C++ で文字列の最初の文字を大文字にする

この記事では、文字列の最初のアルファベットを大文字に変換するさまざまな方法について説明します。

C++ で文字列の最初の文字を大文字にする

この問題を 3つの異なるケースで扱います。

  1. 文字列はアルファベットで始まります。
  2. 文字列が特殊文字または数字で始まる。
  3. 文字列にはマルチバイトの開始文字が含まれており、各単語を大文字にする必要があります。

文字列に最初の文字としてアルファベットが含まれている

この場合の解決策は簡単です。 組み込みの toupper() ライブラリ関数を使用するか、ユーザー定義の実装を使用できます。

C++ には toupper() というメソッドがあります。 このメソッドは、小文字のアルファベットを大文字に変換します。

文字列の初期インデックスでこの関数を呼び出すだけで、目的を達成できます。

コード例:

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

int main() {
  string str = "sudo";
  str[0] = toupper(str[0]);
  cout << str;
}

出力:

Sudo

組み込みメソッドの背後にあるロジックに精通していることが常に賢明です。 組み込みのものを使用せずに解決策を探しましょう。

a から z までの小文字は、97 から 122 までの ASCII 値を持ち、A から Z までの大文字は、65 から 92 までの ASCII 値を持ちます。 小文字から大文字への変換のために、入力 char の ASCII 値から 32 を差し引きます。

最初の文字がすでに大文字であるかどうかを常に確認することをお勧めします。 そうしないと、奇妙な出力に直面しなければならない場合があります。

コード例:

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

int main() {
  string ML_Model = "artificial neural networks";
  if (ML_Model[0] >= 97 && ML_Model[0] <= 122) {  // if it is a lowercase char
    ML_Model[0] = ML_Model[0] - 32;
  }
  cout << ML_Model;
}

出力:

Artificial neural networks

文字列の最初の文字は特殊文字です

ここで、文字列の先頭に特殊文字または数字が含まれる場合について説明します。 その場合、最初の文字から 32 を引くと、奇妙な記号が生成される可能性があります。

このようなタイプの文字列を処理するには、まず isalpha メソッドを使用して、それがアルファベットかどうかを判断します。 そして、このメソッドの後、キャラクターに対して toupper 関数を使用します。

コード例:

#include <iostream>
using namespace std;

void upperCaseAlphabet(string &str) {
  for (int i = 0; i <= str.length(); i++) {
    if (isalpha(str[i])) {
      str[i] = toupper(str[i]);
      break;
    }
  }
}

int main() {
  string str = "#1delftstack";
  upperCaseAlphabet(str);
  cout << str;
}

出力:

#1Delftstack

マルチバイトの開始文字を含む複数の単語を含む文字列

前の例では、1つの単語のみを含む文字列を扱っていました。 より多くの単語と特殊文字を含む長い文字列を処理し、文字列の各単語を大文字にしましょう。

toupper()isalpha() および isspace() メソッドを使用して、目標を達成します。

  1. toupper() - アルファベット文字を大文字に変換します。
  2. isalpha() - 文字がアルファベットかどうかをチェックします。
  3. isspace() - 文字がスペースかどうかをチェックします。

コード例:

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

void upperCaseAlphabet(string &str) {
  bool flag = true;
  for (int i = 0; i <= str.length(); i++) {
    if (isalpha(str[i]) && flag == true) {
      str[i] = toupper(str[i]);
      flag = false;
    } else if (isspace(str[i])) {
      flag = true;
    }
  }
}

int main() {
  string str = "i $love #\Traveling";
  upperCaseAlphabet(str);
  cout << str;
}

出力:

I $Love #\Traveling

関連記事 - C++ String