Il existe en C++
une classe plus pratique que le type de base
char*
pour les manipulation de base des chaînes de caractères, il s'agit de la
classe string
(inclure pour cela #include <string>
). Exemple d'utilisation:
string a = "Bonjour"; string nom = "Marie"; string b = a + " " + nom; // concaténation de chaînes char* c = b.c_str(); // transformer un string en char* a = string(c); // transformer un char* en string
Pour rechercher une sous-chaîne dans un string a
, on peut utiliser la
fonction membre find
comme dans l'exemple
a.find("jour")
.
Pour plus de détails sur les string
, vous
pouvez par exemple consulter
http://casteyde.christian.free.fr/cpp/cours/online/c5501.html#STRINGSECT
Pour créer et extraire des chaînes de caractères cependant,
les bonnes vieilles fonctions sprintf
et sscanf
du C
sur les char*
sont toujours aussi pratiques. Ainsi:
char* c = new char[200]; sprintf(c, "Bonjour %s pour la %dième fois !", "Marie", 2);écrira, dans
c
, la chaîne
Bonjour Marie pour la 2ième fois !
. En effet,
les %
suivis d'une lettre sont remplacés dans l'ordre par les
arguments suivants, la lettre spécifiant le type de l'agument (on peut
également éventuellement spécifier le format):
%s
indique une chaîne de caractères tandis que %d
indique
un entier. Plus de détails dans les pages de man
(taper
man sprintf
dans un terminal pour avoir l'aide sur cette fonction) !