CSTR

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011 - 5 avril 2005 à 09:23
hitchhikr Messages postés 36 Date d'inscription dimanche 8 décembre 2002 Statut Membre Dernière intervention 8 avril 2005 - 8 avril 2005 à 15:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/30355-cstr

hitchhikr Messages postés 36 Date d'inscription dimanche 8 décembre 2002 Statut Membre Dernière intervention 8 avril 2005
8 avril 2005 à 15:42
Je ne vois aucune raison pour que ça plante, comme je l'ai précisé ci-dessus c'est une classe que j'utilise depuis longtemps sans aucuns problèmes.
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
8 avril 2005 à 14:45
pr des raisons d'allocations

essaie; 10 contre 1 que ça plante un peu plus loin qd tu réutilisera ta variable
hitchhikr Messages postés 36 Date d'inscription dimanche 8 décembre 2002 Statut Membre Dernière intervention 8 avril 2005
8 avril 2005 à 13:18
"tu dois absoluement préciser en commentaire de ne pas utiliser cette fonction directement
a.Set_String("coucou"); //interdit !"


Pourquoi inderdit ?
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
5 avril 2005 à 14:17
ok

pour les const, c'est un peu la mm rq que Steve sur ton CList

en fait
f(const T&a)
permet de transmettre le param par adresse
ce qui accélère le traitement

et par conséquent tes "variations sur un thème"
tel que
f(T*a)
qui font exactement la mm chose sont redondante et inutiles.



enfin
pr l'utilisation de Set_String
j'ai compris l'astuce, il faut absoluement avoir fait un malloc ou similaire auparavant.

tu dois absoluement préciser en commentaire de ne pas utiliser cette fonction directement
a.Set_String("coucou"); //interdit !


voilà
++
Nono.
hitchhikr Messages postés 36 Date d'inscription dimanche 8 décembre 2002 Statut Membre Dernière intervention 8 avril 2005
5 avril 2005 à 12:58
En fait j'ai fait cette classe il y a plusieurs années déjà lorsque j'ai converti plusieurs programmes vb et je n'y ai pas vraiment touché depuis (j'ai juste modifié l'entête de la source lorsque je l'ai distribuée), tout comme clist, ce n'est pas un modèle de programmation à suivre (j'ai ajouté les fonctionalités au fur et à mesure des besoins sans vraiment me soucier de la cohérence globale) et l'implementation n'est pas la plus rapide possible et elles ne sont pas commentées du tout mais ce sont des classes assez robustes tout de même (je les utilisent dans mon ide, par exemple).

"A propos, j'ai un doute pr une fonction:
Set_String
ton commentaire dit : "return ...." alors que c'est un void.
ceci n'est pas grave, mais il me semble que cette fonction possède un probleme d'allocation."

Pour set_string le commentaire est faux (c'est le même que get_string), je ne vois aucun problème d'allocation.

"sinon, pourrais tu expliquer la signification du && et du || pour des chaines"

Je crois bien que ces 2 opérateurs ne servent à rien, j'ai du vouloir les utiliser pour quelque chose et finalement j'ai dû oublier de les retirer de la source.

"bon, tout d'abord, il faut que tu penses à utiliser les accélération du C++ avec les const"

C'est à dire ?

"utilité String(int Count, int IntChar) ?? en pratiq..."

J'avais crée cette fonction pour les conversions en provenance de vb. La méthode sert à créer une chaine remplie d'un unique caractère (cf. vb).

Si un jour j'ai le temps je nettoierai un peu tout ça.
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
5 avril 2005 à 09:27
j'ai du faire un mauvais mouvenent de souris...

la phrase commençant par "intéret"

était sencé etre après celle proposant d'utiliser les const.

++
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
5 avril 2005 à 09:23
Bonjour

une nouvelle classe de gestion de chaine...
pourquoi pas. voici la mienne:
http://www.cppfrance.com/code.aspx?ID=19668

bon, tout d'abord, il faut que tu penses à utiliser les accélération du C++ avec les const
ensuite, ça manque cruellement de commentaire pour l'utilisation des fonction:
tout au moins: objectif & paramètres & retour

a propos, j'ai un doute pr une fonction:
Set_String
ton commentaire dit : "return ...." alors que c'est un void.
ceci n'est pas grave, mais il me semble que cette fonction possède un probleme d'allocation.

sinon, pourrais tu expliquer la signification du && et du || pour des chaines

intéret (mis à part de ceux qu'amene les const à utiliser les pointeurs sur CStr) => diviser le nb de comparaision & utilisation par 4...

CStr operator+(CStr String_Left, bool String_Right) et similaire => utiliser les constructeurs dédiés...

mm si un poil plus lent => modifs & complexité simplifiées


CStr operator&(CStr String_Left, CStr String_Right) <=> operator+


utilité String(int Count, int IntChar) ?? en pratiq...


attention, tes méthodes d'extraction de chemins/fichier ont une précondition : le séparateur doit etre un "\"


ton Is_Numeric() renvoi vrai pour "+-+-3" alors que je dirai faux...
il ne prend en compte que la ',' et pas le '.'
et en accepte plusieurs!!!
=> retourne également vrai pr "1,2,3" alors que je dirai faux...

> fonction à reprendre : ID inspire toi de mon :
bool BString::checkIsNbr(const bool uniquenmentDecimal,const bool nombreAvecSuffixeC,const bool bNegatifOk)const
/// ----- const bool uniquenmentDecimal(par défaut : 'true') : uniquement les décimaux tolérés?
/// ----- const bool nombreAvecSuffixeC(par défaut : 'false') : reco optionnel nb avec suffixe éventuel(1 lettre : 'f' , 'l' ou 'U')
///+ f: float, U: unsigned, l:long
/// ----- const bool bNegatifOk(par défaut : 'false') : valider les nombres négatifs
/// --------------------------------------------------------------------------------------------------------------------------------------------------
/// ----- retour (bool) : cf.obj
qui Cette derniere fonction reconnais également les nombres en notation scientifique (avec le e)

Voilà

j'espere que ça t'aidera

Magicalement
Bonne prog
Bruno
Rejoignez-nous