fatal_error a écrit:Hello,
Donc deja, je vais etre un peu sec mais:
preferer le C par rapport au C++ n est absolument pas justifie ici.
Qu il s agisse de gestion memoire ou de gestion de rapidite.
Si vous faites allusion aux char*, rien n empeche de gerer des char* en C++, encore faudrait-il justifier l overhead d un sizeof et le comportement de string.
Maintenant comme vous semblez a tout prix vouloir faire du C, pourquoi pas, mais evitons ces arguments ou alors comparons apres que des solutions comparables aient ete proposees.
C'est vrai que tu proposais une solution en C++, en même temps si cela fonctionne en C, l'implémentation en C++ ne devrait pas poser plus de problème que cela. Je suis plus à l'aise en C qu'en C++ soit dit en passant (d'où mon choix).
fatal_error a écrit:Enfin vous ne semblez pas vous preoccupez de l assignation d une telle structure, et de la modification de la premiere chaine...
- Code: Tout sélectionner
mystring s("blabla");
mystring s2=s.replace("a","b");
//s2 reutilise la chaine utilisee par s.
s.inplaceReplace("aeff","feeee");
//s2 n est pas impacte par la modification de s
J ai pas dit que c est necessare, mais c est une question a se poser, ce genre de cas (ou la premiere chaine est modifiee) peut il arriver, si oui comment le gerer pour ne pas impacter les chaines qui se basent sur la premiere...
Personnellement je ne trouve pas que cela change grand chose. Au lieu de faire un realloc, on déclare un nouveau char* puis un calloc que l'on concatène au fur et à mesure ce qui rend les choses beaucoup plus simples.
Par ailleurs lorsque l'on parle de remplacer, implicitement cela signifie qu'on modifie la chaine principale, ce qui me semble être le cas le plus difficile.