Les HOWTO Linux...
Page suivante - Page précédente - Table des matières
3. Utilisation de la classe String
Pour utiliser la classe String, vous devez d'abord vous reporter au programme d'exemple "example_String.cpp" donné en Annexe A et à la classe String qui se trouve en Annexe B.
La classe String est un remplacement complet des types
char
et char~*
.
Vous pouvez l'utiliser exactement comme vous utilisez char et avoir encore plus
de fonctionnalités.
Vous devez faire l'édition des liens avec la bibliothèque 'libString.a' que vous
pouvez obtenir en utilisant le Makefile fourni en
Annexe H et copier la bibliothèque dans le
répertoire /usr/lib ou /lib (NdT: sous Unix) où les bibliothèques se trouvent.
Pour utiliser 'libString.a', compilez vos programmes ainsi
g++ exemple.cpp -lString
Regardez l'exemple de code donné ci-dessous
String aa; aa = " Le siège de l'ONU est à New-York "; // Vous pouvez utiliser aa.val() comme une variable 'char~*' dans vos // programmes for (unsigned long tmpii = 0; tmpii < aa.length(); tmpii++) { //fprintf(stdout, "aa.val()[%ld]=%c ", tmpii, aa.val()[tmpii]); fprintf(stdout, "aa[%ld]=%c ", tmpii, aa[tmpii]); } // Utiliser des pointeurs sur le 'char~*" val for (char~*tmpcc = aa.val(); *tmpcc != 0; tmpcc++) { fprintf(stdout, "aa.val()=%c ", *tmpcc); }
Un programme d'exemple complet "example_String.cpp" utilisant la classe String est donné en Annexe A et la classe String est donnée en Annexe B.
3.1 Opérateurs
La classe String fournit les opérateurs suivant :
- Égal à ==
- Non égal à !=
- Affectation =
- Addition et affectation +=
- Concaténation des chaînes de caractères ou addition +
String aa; String bb("Linus Torvalds") aa = "mettez une chaîne ici"; // affectation aa += "ajoutez-en un peu plus"; // rajout aa = "Mon nom est" + " Alavoor Vasudevan "; // concaténation de String if (bb == "Linus Torvalds") // égalité booléenne cout << "bb est égale à 'Linus Torvalds' " << endl; if (bb != "Alan Cox") // non égalité booléenne cout << "bb n'est pas égal à 'Alan Cox'" << endl;
3.2 Fonctions
Les fonctions fournies par la classe String ont les même noms que celles de la classe String de Java. Les noms des fonctions et leur comportement sont exactement les mêmes que ceux de la classe String de Java ! La classe StringBuffer est aussi fournie. Cela facilitera le portage de code entre Java et C++ (vous pouvez faire du copier/coller et avoir seulement à modifier très légèrement votre code).
Le code du corps d'un fonction Java peut être copié dans le corps d'une fonction membre C++ et avec très peu de changements être compilé en C++. Un autre avantage est que les développeurs codant en Java et en C++ n'ont pas besoin de connaître deux syntaxes ou deux noms de fonctions différents.
Reportez vous en annexe B String.h pour avoir des détails sur les noms des fonctions de la classe String.
Par exemple pour convertir un entier en chaîne, faire :
String aa; aa = 34; // L'opérateur '=' convertira l'entier en chaîne cout << "La valeur de aa est : " << aa.val() << endl; aa = 234.878; // L'opérateur '=' convertira le réel en chaîne cout << "La valeur de aa est : " << aa.val() << endl; aa = 34 + 234.878; cout << "La valeur de aa est : " << aa.val() << endl; // aa doit contenir '268.878' (nombre en notation anglaise) // transtypage aa = (String) 34 + " Célèbre hacker Linus Torvalds " + 234.878; cout << "La valeur de aa est : " << aa.val() << endl; // aa doit contenir '34 Célèbre hacker Linus Torvalds 234.878'
Page suivante - Page précédente - Table des matières