Comment convertir une chaîne de caractères en majuscules en C++
-
Utilisez
std::transform()
etstd::toupper()
pour convertir une chaîne de caractères en majuscules -
Utilisez
icu::UnicodeString
ettoUpper()
pour convertir la chaîne en majuscules -
Utilisez
icu::UnicodeString
ettoUpper()
avec une localisation spécifique pour convertir la chaîne en majuscules
Cet article explique plusieurs méthodes C++ pour convertir une string
en majuscules.
Utilisez std::transform()
et std::toupper()
pour convertir une chaîne de caractères en majuscules
La méthode std::transform
est issue de la bibliothèque STL <algorithm>
, et elle peut appliquer la fonction donnée à une plage. Dans cet exemple, nous l’utilisons pour opérer sur une plage de caractères std::string
et convertir chaque char
en lettres majuscules en utilisant la fonction toupper
. Notez que, même si cette méthode réussit à transformer les caractères d’un seul octet de la chaîne donnée, les caractères avec un encodage sur plusieurs octets ne sont pas mis en majuscules, comme on peut le voir dans la sortie du programme.
#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;
}
Production:
input string: hello there είναι απλά ένα κείμενο χωρίς
output string: HELLO THERE είναι απλά ένα κείμενο χωρίς
Utilisez icu::UnicodeString
et toUpper()
pour convertir la chaîne en majuscules
Le code ci-dessus fonctionne bien pour les chaînes ASCII et certains autres caractères, mais si vous passez par exemple certaines séquences de chaînes Unicode, la fonction toupper
ne les mettra pas en majuscules. La solution portable consiste donc à utiliser les routines de la bibliothèque ICU
(International Components for Unicode), qui est suffisamment mature pour offrir une certaine stabilité, est largement accessible et permet de conserver un code multiplateforme.
Pour utiliser la bibliothèque ICU
, vous devez inclure les en-têtes suivants <unicode/unistr.h>
, <unicode/ustream.h>
et <unicode/locid.h>
dans votre fichier source. Il y a de fortes chances que ces bibliothèques soient déjà installées et disponibles sur votre système d’exploitation, et les exemples de code devraient fonctionner parfaitement. Mais si vous obtenez des erreurs à la compilation, consultez les instructions sur le site de l’ICU website sur la façon de télécharger les bibliothèques pour des plates-formes spécifiques.
Notez que vous devez fournir les indicateurs de compilation suivants pour réussir à établir un lien avec les dépendances des bibliothèques de l’ICU:
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;
}
Production:
input string: hello there είναι απλά ένα κείμενο χωρίς
output string: HELLO THERE ΕΊΝΑΙ ΑΠΛΆ ΈΝΑ ΚΕΊΜΕΝΟ ΧΩΡΊΣ
Utilisez icu::UnicodeString
et toUpper()
avec une localisation spécifique pour convertir la chaîne en majuscules
La fonction toUpper
peut également accepter un paramètre locale
pour opérer sur la chaîne avec les conventions d’une locale
spécifique. L’argument à passer peut être construit séparément comme objet icu::Locale
ou vous pouvez simplement spécifier la locale dans la chaîne de caractères littérale à la fonction toUpper
, comme démontré dans l’exemple de code suivant:
#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 FacebookArticle connexe - C++ String
- Comparaison de chaîne et de caractère en C++
- Supprimer le dernier caractère d'une chaîne en C++
- Obtenir le dernier caractère d'une chaîne en C++
- Différences entre l'opérateur sizeof et la fonction strlen pour les chaînes en C++
- Effacer la chaîne en C++
- Imprimer toutes les permutations de la chaîne en C++