Fondamentaux des chaînes de caractères en C++

C++C++Beginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp/BasicsGroup -.-> cpp/data_types("Data Types") cpp/BasicsGroup -.-> cpp/arrays("Arrays") cpp/BasicsGroup -.-> cpp/strings("Strings") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/StandardLibraryGroup -.-> cpp/string_manipulation("String Manipulation") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") subgraph Lab Skills cpp/data_types -.-> lab-178539{{"Fondamentaux des chaînes de caractères en C++"}} cpp/arrays -.-> lab-178539{{"Fondamentaux des chaînes de caractères en C++"}} cpp/strings -.-> lab-178539{{"Fondamentaux des chaînes de caractères en C++"}} cpp/output -.-> lab-178539{{"Fondamentaux des chaînes de caractères en C++"}} cpp/user_input -.-> lab-178539{{"Fondamentaux des chaînes de caractères en C++"}} cpp/string_manipulation -.-> lab-178539{{"Fondamentaux des chaînes de caractères en C++"}} cpp/standard_containers -.-> lab-178539{{"Fondamentaux des chaînes de caractères en C++"}} end

Aperçu du contenu

Le C++ prend en charge deux types de chaînes de caractères :

  1. Une chaîne de caractères est un tableau de 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.
  2. La nouvelle classe 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.

  • Déclaration et initialisation des chaînes de caractères
  • Entrée/sortie des chaînes de caractères
  • Opérations sur les chaînes de caractères

Déclaration et initialisation des 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

Entrée/sortie des chaînes de caractères

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
description de l'image

NOTES :

  • Nous devons inclure "#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é.
  • Pour vider 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>.

Opérations sur les chaînes de caractères

  • 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
description de l'image

Sommaire

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.