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); }
La classe String fournit les opérateurs suivant :
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;
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'