Introduction
Dans ce laboratoire, vous allez apprendre les chaînes de caractères en C++. Vous allez apprendre à définir et initialiser des chaînes de caractères, et à utiliser les fonctions de chaînes de caractères.
💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici
Dans ce laboratoire, vous allez apprendre les chaînes de caractères en C++. Vous allez apprendre à définir et initialiser des chaînes de caractères, et à utiliser les fonctions de chaînes de caractères.
Le C++ prend en charge deux types de chaînes de caractères :
char
, terminé par un caractère NULL
'\0'
(Hex 0
). Elle est également appelée chaîne de caractères ou chaîne de caractères au format C.string
introduite en C++98.La classe string
de "niveau supérieur" est recommandée, car elle est beaucoup plus facile à utiliser et à comprendre. Cependant, de nombreux programmes hérités utilisaient les chaînes de caractères au format C ; de nombreux programmeurs utilisent également des chaînes de caractères au format C de "niveau inférieur" pour un contrôle total et une efficacité maximale ; en outre, dans certaines situations telles que les arguments de ligne de commande, seules les chaînes de caractères au format C sont prises en charge. Par conséquent, vous devrez peut-être comprendre les deux types de chaînes de caractères.
Pour utiliser la classe string
, incluez le fichier d'en-tête <string>
et "using namespace std
".
Vous pouvez déclarer et initialiser une chaîne de caractères avec un littéral de chaîne de caractères, initialiser une chaîne vide, ou initialiser avec un autre objet chaîne de caractères. Par exemple,
#include <string>
using namespace std;
string str1("Hello"); // Initialisation avec un littéral de chaîne de caractères (Initialisation implicite)
string str2 = "world"; // Initialisation avec un littéral de chaîne de caractères (Initialisation explicite via l'opérateur d'affectation)
string str3; // Initialisation d'une chaîne vide
string str4(str1); // Initialisation en copiant à partir d'un objet chaîne de caractères existant
Exemple
/* Test de l'entrée et de la sortie de la classe chaîne de caractères */
#include <iostream>
#include <string> // Nécessaire pour utiliser la classe chaîne de caractères
#include <limits>
using namespace std; // Nécessaire également pour <string>
int main() {
string message("Hello");
cout << message << endl;
// Entrez un mot (délimité par un espace) dans une chaîne de caractères
cout << "Entrez un message (sans espace) : ";
cin >> message;
cout << message << endl;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
// Videz cin jusqu'au caractère de nouvelle ligne (nécessite le fichier d'en-tête <limits>)
// Entrez une ligne dans une chaîne de caractères
cout << "Entrez un message (avec des espaces) : ";
getline(cin, message); // Lit l'entrée de cin dans message
cout << message << endl;
return 0;
}
Sortie :
Hello
Entrez un message (sans espace) : hello
hello
Entrez un message (avec des espaces) : hello world
hello world
NOTES :
#include <string>
" pour utiliser la classe string
, et "using namespace std
" car string
est définie dans l'espace de noms std
.cin >> aStr
" lit un mot (délimité par un espace) à partir de cin
(le clavier), et l'attribue à la variable string
aStr
.getline(cin, aStr)
lit toute la ligne (jusqu'à '\n'
) à partir de cin
, et l'attribue à aStr
. Le caractère '\n'
est éliminé.cin
, vous pouvez utiliser la fonction ignore(numeric_limits<streamsize>::max(), '\n')
pour éliminer tous les caractères jusqu'à '\n'
. numeric_limits
se trouve dans le fichier d'en-tête <limits>
.Vérification de la longueur d'une chaîne de caractères :
string str("Hello, world");
// Les deux renvoient la longueur de la chaîne de caractères
cout << str.length() << endl; // 12
cout << str.size() << endl; // 12
Vérification d'une chaîne de caractères vide :
string str1("Hello, world");
string str2; // Chaîne de caractères vide
// Vérifiez si la chaîne de caractères est vide.
cout << str1.empty() << endl; // 0 (faux)
cout << str2.empty() << endl; // 1 (vrai)
Copie à partir d'une autre chaîne de caractères : Utilisez simplement l'opérateur d'affectation "=".
string str1("Hello, world"), str2;
str2 = str1;
cout << str2 << endl; // Hello, world
Concaténation avec une autre chaîne de caractères : Utilisez l'opérateur plus "+", ou le plus composé "+=".
string str1("Hello,");
string str2(" world");
cout << str1 + str2 << endl; // "Hello, world"
cout << str1 << endl; // "Hello,"
cout << str2 << endl; // " world"
str1 += str2;
cout << str1 << endl; // "Hello, world"
cout << str2 << endl; // " world"
string str3 = str1 + str2;
cout << str3 << endl; // "Hello, world world"
str3 += "again";
cout << str3 << endl; // "Hello, world worldagain"
Lecture/écriture d'un caractère individuel d'une chaîne de caractères :
string str("Hello, world");
// Renvoie le caractère à l'index, l'index commence à 0. Effectue une vérification des limites d'index.
cout << str.at(0) << endl; // 'H'
cout << str[1] << endl; // 'e'
cout << str.at(str.length() - 1) << endl; // 'd'
str.at(1) = 'a'; // Écrire à l'index 1
cout << str << endl; // "Hallo, world"
str[0] = 'h';
cout << str << endl; // "hallo, world"
Extraction d'une sous-chaîne :
string str("Hello, world");
// Renvoie la sous-chaîne commençant à beginIndex, de taille
cout << str.substr(2, 6) << endl; // "llo, w"
Comparaison avec une autre chaîne de caractères :
string str1("Hello"), str2("Hallo"), str3("hello"), str4("Hello");
cout << str1.compare(str2) << endl; // 1 'e' > 'a'
cout << str1.compare(str3) << endl; // -1 'h' < 'H'
cout << str1.compare(str4) << endl; // 0
// Vous pouvez également utiliser l'opérateur == ou!=
if (str1 == str2) cout << "Same" << endl;
if (str3!= str4) cout << "Different" << endl;
cout << boolalpha; // Affiche les booléens sous forme de true/false
cout << (str1!= str2) << endl;
cout << (str1 == str4) << endl;
Recherche/remplacement de caractères : Vous pouvez utiliser les fonctions disponibles dans #include <algorithm>
Par exemple,
#include <algorithm>
......
string str("Hello, world");
replace(str.begin(), str.end(), 'l', '_');
cout << str << endl; // He__o, wor_d
Exemple
/* Exemple sur la fonction de chaîne de caractères C++ */
#include <iostream>
#include <string> // Utiliser la classe chaîne de caractères
using namespace std;
int main() {
string msg = "hello, world!";
cout << msg << endl;
cout << msg.length() << endl; // Longueur de la chaîne de caractères
cout << msg.at(1) << endl; // Caractère à l'index 1
cout << msg[1] << endl; // Identique à ci-dessus
cout << msg.empty() << endl; // Vérification d'une chaîne de caractères vide
cout << msg.substr(3, 3) << endl; // Sous-chaîne commençant à
// la position 3 de taille 3
cout << msg.replace(3, 3, "why") << endl; // Remplacement de la sous-chaîne
cout << msg.append("end") << endl; // Ajout à la fin
cout << msg + "end" << endl; // Identique à ci-dessus
cout << msg.insert(3, "insert") << endl; // Insertion après la position 3
string msg1;
msg1 = msg; // Copie
cout << msg1 << endl;
cout << "Entrez une ligne : ";
getline(cin, msg); // Lire une ligne d'entrée
cout << msg << endl;
}
Sortie :
hello, world!
13
e
e
0
lo,
helwhy world!
helwhy world!end
helwhy world!endend
helinsertwhy world!end
helinsertwhy world!end
Entrez une ligne : a
a
La chaîne de caractères est un autre type de données important en plus des nombres. Dans cette section, nous avons parlé de l'utilisation des chaînes de caractères. C++ fournit de nombreuses méthodes utiles pour manipuler les chaînes de caractères. Apprenez à les utiliser avec aisance.