Großschreiben des ersten Buchstabens einer Zeichenfolge in C++

Neha Imran 12 Oktober 2023
Großschreiben des ersten Buchstabens einer Zeichenfolge in C++

In diesem Artikel werden verschiedene Ansätze zum Konvertieren des ersten Alphabets einer Zeichenfolge in Großbuchstaben beschrieben.

Großschreiben des ersten Buchstabens einer Zeichenfolge in C++

Wir werden dieses Problem in drei verschiedenen Fällen behandeln:

  1. Die Zeichenfolge beginnt mit einem Alphabet.
  2. Die Zeichenfolge beginnt mit einem Sonderzeichen oder einer Zahl.
  3. Die Zeichenfolge enthält ein Multibyte-Startzeichen, und wir müssen jedes Wort groß schreiben.

String enthält Alphabet als erstes Zeichen

Lösungen für diesen Fall sind einfach. Wir können entweder die eingebaute Bibliotheksfunktion toupper() verwenden oder unsere benutzerdefinierte Implementierung verwenden.

Wir haben eine Methode namens toupper() in C++. Diese Methode wandelt ein Kleinbuchstaben-Alphabet in Großbuchstaben um.

Das Ziel kann erreicht werden, indem diese Funktion einfach für den Anfangsindex der Zeichenfolge aufgerufen wird.

Beispielcode:

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

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

Ausgang:

Sudo

Es ist immer ratsam, mit der Logik hinter integrierten Methoden vertraut zu sein. Lassen Sie uns nach einer Lösung suchen, ohne die eingebaute zu verwenden.

Kleinbuchstaben von a bis z haben einen ASCII-Wert zwischen 97 und 122, und Grossbuchstaben von A bis Z haben einen ASCII-Wert zwischen 65 und 92. Wir ziehen 32 vom ASCII-Wert des Eingabezeichens für die Umwandlung von Klein- in Großbuchstaben ab.

Es ist immer gut zu prüfen, ob das erste Zeichen bereits ein Großbuchstabe ist. Andernfalls müssen wir möglicherweise mit einer seltsamen Ausgabe konfrontiert werden.

Beispielcode:

#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;
}

Ausgang:

Artificial neural networks

Der Anfangsbuchstabe von String ist ein Sonderzeichen

Wir werden nun einen Fall besprechen, in dem einige Sonderzeichen oder Zahlen am Anfang der Zeichenfolge stehen können. In diesem Fall kann das Subtrahieren von 32 vom Anfangsbuchstaben ein seltsames Symbol erzeugen.

Um mit solchen Zeichenketten umzugehen, verwenden wir zuerst die Methode isalpha, um festzustellen, ob es sich um ein Alphabet handelt oder nicht. Und nach dieser Methode werden wir die Funktion toupper auf einen Charakter anwenden.

Beispielcode:

#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;
}

Ausgang:

#1Delftstack

Zeichenfolge mit mehreren Wörtern, die Multibyte-Startzeichen enthalten

In den vorherigen Beispielen haben wir es mit Strings zu tun, die nur ein Wort enthalten. Lassen Sie uns jetzt mit längeren Zeichenfolgen arbeiten, die mehr Wörter und Sonderzeichen enthalten, und jedes Wort der Zeichenfolge groß schreiben.

Wir verwenden die Methoden toupper(), isalpha() und isspace(), um das Ziel zu erreichen.

  1. toupper() - wandelt ein Alphabetzeichen in Großbuchstaben um.
  2. isalpha() - überprüft, ob das Zeichen ein Alphabet ist.
  3. isspace() - überprüft, ob das Zeichen ein Leerzeichen ist.

Beispielcode:

#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;
}

Ausgang:

I $Love #\Traveling

Verwandter Artikel - C++ String