single
Challenge: Accès et manipulation des éléments de chaîne
Glissez pour afficher le menu
Indexation d'une chaîne de caractères
Accès aux éléments d'une string (qui sont essentiellement des caractères char) à l'aide de crochets [], de manière similaire aux tableaux. Cette méthode permet également de remplacer un caractère à une position spécifique.
indexing.h
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
L'indexation dans une string commence à zéro, comme pour les tableaux.
La longueur de la chaîne de caractères
Avec cet indexage, il est possible d'essayer d'accéder à un indice incorrect (hors de portée), et le compilateur ne vous avertira pas de cette erreur.
main.cpp
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 se trouve dans la plage valide.
main.cpp
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 avec l'indice n, on peut utiliser la syntaxe suivante :
at.h
1str.at(n);
Fonctionne de la même manière que str[n], mais génère une erreur si vous spécifiez un indice hors de portée.
main.cpp
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
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; }
Glissez pour commencer à coder
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.
- À l'intérieur de
maskEmail, utiliser la méthodefindpour localiser la position du symbole'@', qui marque la fin du nom d'utilisateur. - Vérifier si le nom d'utilisateur contient plus de 1 caractère. Sinon, retourner l'e-mail inchangé.
- Utiliser une boucle
forpour itérer de l'indice 1 jusqu'à (mais sans inclure) la position de'@'. - À l'intérieur de la boucle, remplacer chaque caractère par
'*'afin de masquer le nom d'utilisateur. - Retourner l'e-mail modifié.
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion