HOWTO · C++
Comment interpréter une chaîne de caractères en C++
Cet article présente comment itérer à travers une chaîne de caractères et conserver l'index en C++
Cet article présente plusieurs méthodes permettant d’itérer une chaîne de caractères tout en conservant le compte de l’index en C++.
Utiliser la boucle à base de plage pour itérer une chaîne de caractères en C++
Le style moderne du langage C++ recommande l’itération basée sur la gamme pour les structures qui la supportent. En attendant, l’index actuel peut être stocké dans une variable séparée de type size_t qui sera incrémentée à chaque itération. Notez que l’incrément est spécifié avec l’opérateur ++ à la fin de la variable, parce que le mettre comme préfixe donnerait un index qui commence par 1. L’exemple suivant ne montre que la partie courte de la sortie du programme.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "They talk of days for which they sit and wait";
size_t index = 0;
for (char c : text) {
cout << index++ << " - '" << c << "'" << endl;
}
return EXIT_SUCCESS;
}
Production :
0 - 'T'
1 - 'h'
2 - 'e'
...
43 - 'i'
44 - 't'
Utiliser la boucle for pour itérer une chaîne de caractères en C++
Il est élégant et puissant dans la boucle for conventionnelle, car il offre une flexibilité lorsque le champ d’application interne implique des opérations de matrice / réseau multidimensionnel. C’est également la syntaxe d’itération préférée lorsque l’on utilise des techniques de parallélisation avancées comme la norme OpenMP.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "They talk of days for which they sit and wait";
for (int i = 0; i < text.length(); ++i) {
cout << i << " - '" << text[i] << "'" << endl;
}
return EXIT_SUCCESS;
}
Production :
0 - 'T'
1 - 'h'
2 - 'e'
...
43 - 'i'
44 - 't'
On peut aussi accéder aux caractères individuels de la chaîne avec la fonction membre at().
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
string text = "They talk of days for which they sit and wait";
for (int i = 0; i < text.length(); ++i) {
cout << i << " - '" << text.at(i) << "'" << endl;
}
return EXIT_SUCCESS;
}
Production :
0 - 'T'
1 - 'h'
2 - 'e'
...
43 - 'i'
44 - 't'