Le concept de string manque dans le langage C. Présent en C++ grâce à la POO, l'objet string facilite la vie des développeurs dès lors que l'on souhaite manipuler des chaine de caractère.
Si l'on se penche sur la question, il est assez aisé d'imiter le type string en langage C, en faisant de la "pseudo POO".
Sans la surcharge de méthodes et d'opérateurs, voici une petite source permettant de créer des Variables type string (les MSTRING), de leur affecter simplement une valeur, de les concaténer et de les spliter entre elles, etc...
les fonctions sont :
affect => affecter une chaine de caractère à une MSTRING
concat => concatène deux MSTRING
deconcat => split de MSTRING selon une MSTRING, c'est à dire que le délimiteur n'est pas un caractère mais bien une chaine de caractère.
equal => compare deux MSTRING
destroyM => détruit une MSTRING
destroyP => détruit un tableau de MSTRING (les PSTRING)
Les allocations sont dynamiques, et permettent en théorie de donner dynamiquement une taille à une MSTRING.
Les fonctions prennent un dernier paramètre de type MSTRING permettant de ne pas modifier les deux premier.
ex: concat(string1, string2, string3) renvoie string3 (string3 = string1+string2) ainsi string1 et string2 ne sont pas modifiés.
ATTENTION, nous ne sommes pas en C++, donc pas de destructeur, il est donc nécessaire de détruire manuellement chaque chaine(MSTRING) "construite" avec destroyM() et chaque tableau de chaine(PMSTRING) avec destroyP().Eh oui! pas de miracle (vous croyiez quoi !!!).
J'ai testé le code sous valgrind (pour ceux qui connaissent), si les destruction de MSTRING se font correctement, il n'y a pas de fuite de mémoire.
Il doit certainement y avoir beaucoup d'améliorations à apporter, je peux juste dire qu'après avoir développé ces MSTRING, cela m'a beaucoup facilité la vie!!
Nul doute que les pros s'ennuieront devant cette source, puisqu'ils disposeront certainement des libs bien plus puissantes, mais j'ose espérer que certains débutants trouveront leur bonheur et que mes MSTRING dépanneront des codes sources =))
Développé sous CodeBlocks 8.02, Le code est portable et fonctionne donc sur tous les OS.