Wie konvertiert man Zeichenkette in C++ in Großbuchstaben
-
Verwenden Sie
std::transform()
undstd::toupper()
, um eine Zeichenkette in Großbuchstaben zu konvertieren -
Verwenden Sie
icu::UnicodeString
undtoUpper()
, um Zeichenkette in Großbuchstaben umzuwandeln -
Verwenden Sie
icu::UnicodeString
undtoUpper()
mit spezifischem Gebietsschema, um Zeichenkette in Großbuchstaben zu konvertieren
In diesem Artikel werden mehrere C++-Methoden zur Konvertierung einer Zeichenkette in Großbuchstaben erläutert.
Verwenden Sie std::transform()
und std::toupper()
, um eine Zeichenkette in Großbuchstaben zu konvertieren
Die std::transform
Methode ist aus der STL <algorithm>
Bibliothek, und sie kann die gegebene Funktion auf einen Bereich anwenden. In diesem Beispiel verwenden wir sie, um mit dem Zeichenbereich std::string
zu arbeiten und jedes char
mit Hilfe der toupper
-Funktion in Großbuchstaben umzuwandeln. Beachten Sie, dass, obwohl diese Methode die Einzelbyte-Zeichen aus der gegebenen Zeichenkette erfolgreich transformiert, Zeichen mit Multi-Byte-Kodierung nicht groß geschrieben werden, wie in der Programmausgabe zu sehen ist.
#include <iostream>
#include <algorithm>
#include <string>
using std::cout; using std::string;
using std::endl; using std::cin;
using std::transform; using std::toupper;
string capitalizeString(string s)
{
transform(s.begin(), s.end(), s.begin(),
[](unsigned char c){ return toupper(c); });
return s;
}
int main() {
string string1("hello there είναι απλά ένα κείμενο χωρίς");
cout << "input string: " << string1 << endl
<< "output string: " << capitalizeString(string1) << endl << endl;
return 0;
}
Ausgabe:
input string: hello there είναι απλά ένα κείμενο χωρίς
output string: HELLO THERE είναι απλά ένα κείμενο χωρίς
Verwenden Sie icu::UnicodeString
und toUpper()
, um Zeichenkette in Großbuchstaben umzuwandeln
Der obige Code funktioniert gut für die ASCII-Zeichenketten und einige andere Zeichen, aber wenn Sie z. B. bestimmte Unicode-Zeichenketten übergeben, wird die toupper
-Funktion diese nicht groß schreiben. Daher besteht die portable Lösung darin, Routinen aus der ICU
(International Components for Unicode) Bibliothek zu verwenden, die reif genug ist, um Stabilität zu bieten, weitläufig zugänglich ist und Ihren Code plattformübergreifend hält.
Um die ICU
-Bibliothek zu nutzen, sollten Sie die folgenden Überschriften <unicode/unistr.h>
, <unicode/ustream.h>
und <unicode/locid.h>
in Ihre Quelldatei aufnehmen. Es besteht eine gute Chance, dass diese Bibliotheken bereits installiert und auf Ihrem Betriebssystem verfügbar sind, und Code-Beispiele sollten problemlos funktionieren. Wenn Sie jedoch Fehler bei der Kompilierung erhalten, lesen Sie die Anweisungen auf der ICU Website, wie Sie Bibliotheken für bestimmte Plattformen herunterladen können.
Beachten Sie, dass Sie die folgenden Compiler-Flags bereitstellen sollten, um eine erfolgreiche Verknüpfung mit den Abhängigkeiten der ICU-Bibliothek herzustellen:
g++ sample_code.cpp -licuio -licuuc -o sample_code
#include <iostream>
#include <string>
#include <unicode/unistr.h>
#include <unicode/ustream.h>
#include <unicode/locid.h>
using std::cout; using std::string;
using std::endl; using std::cin;
using std::transform; using std::toupper;
int main() {
string string1("hello there είναι απλά ένα κείμενο χωρίς");
icu::UnicodeString unicodeString(string1.c_str());
cout << "input string: " << string1 << endl
<< "output string: " << unicodeString.toUpper() << endl;
return 0;
}
Ausgabe:
input string: hello there είναι απλά ένα κείμενο χωρίς
output string: HELLO THERE ΕΊΝΑΙ ΑΠΛΆ ΈΝΑ ΚΕΊΜΕΝΟ ΧΩΡΊΣ
Verwenden Sie icu::UnicodeString
und toUpper()
mit spezifischem Gebietsschema, um Zeichenkette in Großbuchstaben zu konvertieren
Die toUpper
Funktion kann auch locale
Parameter akzeptieren, um auf der Zeichenkette mit den Konventionen eines bestimmten locale
zu arbeiten. Das zu übergebende Argument kann separat als icu::Locale
-Objekt konstruiert werden, oder Sie können einfach das Gebietsschema im Zeichenkettenliteral der toUpper
-Funktion angeben, wie im nächsten Code-Beispiel gezeigt wird:
#include <unicode/locid.h>
#include <unicode/unistr.h>
#include <unicode/ustream.h>
#include <iostream>
int main() {
string string2 = "Contrairement à une opinion répandue";
icu::UnicodeString unicodeString2(string2.c_str());
cout << unicodeString2.toUpper("fr-FR") << endl;
return 0;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookVerwandter Artikel - C++ String
- Finden Sie das erste sich wiederholende Zeichen in einer Zeichenfolge in C++
- Finden Sie die längste gemeinsame Teilzeichenfolge in C++
- Großschreiben des ersten Buchstabens einer Zeichenfolge in C++
- Vergleich von String und Character in C++
- Entfernen Sie das letzte Zeichen aus einer Zeichenkette in C++
- Abrufen des letzten Zeichens einer Zeichenkette in C++