Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Accès et Manipulation des Éléments de Chaîne de Caractères | Type de Données Texte
Practice
Projects
Quizzes & Challenges
Quiz
Challenges
/
Types de Données en C++
Section 3. Chapitre 3
single

single

bookDéfi : Accès et Manipulation des Éléments de Chaîne de Caractères

Glissez pour afficher le menu

Indexation d'une chaîne de caractères

Il est possible d'accéder aux éléments d'une string (qui sont essentiellement des caractères char) en utilisant l'indexation avec des crochets [], de manière similaire aux tableaux. Cette méthode permet également de remplacer un caractère à une position spécifique.

indexing.h

indexing.h

copy
12
string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Note
Remarque

L'indexation dans une string commence à zéro, comme pour les tableaux.

La longueur de la chaîne

Avec cet indexage, il est possible d'accéder à un indice incorrect (hors de portée), et le compilateur ne vous avertira pas de cette erreur.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }

Comme vous pouvez le constater, le résultat est inattendu et C++ ne fournit aucun avertissement concernant ce problème. Pour éviter cela, il est possible d'utiliser la méthode .length() afin de déterminer la longueur d'une string et de s'assurer que l'indice reste dans la plage valide.

main.cpp

main.cpp

copy
123456789101112
#include <iostream> int main() { std::string word = "Codefinity"; int index = 12; if (index >= word.length()) std::cout << "The output is unexpected!" << std::endl; else std::cout << word[index]; // Word's length is 10 }

Indexation à l'aide de la méthode

Une autre façon d'indexer consiste à utiliser la méthode .at(). Pour obtenir le caractère à l'indice n, la syntaxe suivante peut être utilisée :

at.h

at.h

copy
1
str.at(n);

Fonctionne de la même manière que str[n], mais génère une erreur si un indice hors de portée est spécifié.

main.cpp

main.cpp

copy
12345678
#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word.at(12); // word's length is 10 // Try outputting the character with the index 5 }

Pratique

Comme mentionné précédemment, il est possible de remplacer les caractères à l'intérieur d'une chaîne en utilisant l'indexation (avec [] ou .at()). Voici un exemple :

main.cpp

main.cpp

copy
123456789
#include <iostream> int main() { std::string word = "Cpdefinitu"; word[1] = 'o'; word.at(word.length() - 1) = 'y'; // length - 1 accesses the last element std::cout << word; }
Tâche

Swipe to start coding

Vous disposez d'une adresse e-mail sous forme de chaîne de caractères. Votre tâche consiste à masquer la partie nom d'utilisateur de l'e-mail pour des raisons de confidentialité.

La fonction maskEmail prend une chaîne de caractères représentant l'adresse e-mail.

  1. À l'intérieur de maskEmail, utilisez la méthode find pour localiser la position du symbole '@', qui marque la fin du nom d'utilisateur.
  2. Vérifiez si le nom d'utilisateur contient plus de 1 caractère. Sinon, retournez l'e-mail inchangé.
  3. Utilisez une boucle for pour itérer de l'indice 1 jusqu'à (mais sans inclure) la position de '@'.
  4. À l'intérieur de la boucle, remplacez chaque caractère par '*' afin de masquer le nom d'utilisateur.
  5. Retournez l'e-mail modifié.

Solution

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 3
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

some-alt