Bstring : gestion de chaine pour tous compilateurs [gcc(dos&unix), vc++,borland...]

Soyez le premier à donner votre avis sur cette source.

Vue 4 723 fois - Téléchargée 320 fois

Description

Cette classe C++, très développée, permet de gérer tjs de la même façon vos chaines de car

les CString sont bien mais pas assez complètes à mon goût
voici enfin mes BString que je vous promet depuis qq tps

@+
Nono

PS: pour une utilisation pratique de cette classe, reportez vous au source de MétaProgLight prochainement dans ces pages...

PS2: à venir BStringLight en version cpp & c
(utilisées par les trace de MétaProg & largement suffisante pour une utilisation simple de chaine)

Conclusion :


voilà, si vous souhaitez enrichir cette classe, n'hésitez pas...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

xarier
Messages postés
688
Date d'inscription
jeudi 26 décembre 2002
Statut
Membre
Dernière intervention
19 mai 2005
-
trop fort ton prog rien a dire exellent :)

voila je te pose 10/10;)
Soilwork9
Messages postés
16
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
13 septembre 2004
-
J'ai regardé rapidement ton code source, et je vois qu'il y a de bonnes idées.

Par exemple, le booléen qui indique si on doit prendre en compte la casse ou non. J'avais eu cette idée aussi pour ma classe CString mais en fait ca ne convenait pas vraiment à ce que je voulais faire donc j'ai laissé tomber cet aspect.
Interessante aussi l'idee du constructeur a partir d'un AnsiString de Borland ou d'un CString de MS, meme si ca me semble bizarre d'utiliser plusieurs classes de chaine dans un meme programme. Je suppose que c'est utile si on souhaite utiliser des fonctions qui retournent des AnsiString/CString, pour les convertir en BString.

Par contre, au niveau de la presentation du code... Pas la moindre ligne de commentaire pour indiquer ce que font les fonctions dans le header.. S'il faut s'amuser a chercher dans le CPP pour savoir ce que fait une fonction exactement, c'est pas gagné! D'autant plus que les noms ne sont pas spécialement significatifs... (ex : convertTxtMisEnForme, ou encore winFormat?). Et puis il y a une typo dans un nom de methode, ca fait assez mal! [setMinMajDifferntes] Enfin, je suppose (j'espere) que tu l'as corrigée depuis..!

Passons aux choses un peu plus sérieuses.. à vrai dire, au premier coup d'oeil, je me suis dit que ca commencait plutot mal :
Dans le header : #include "globals.hpp"
Dans le cpp: #include "stdafx.h"

Hmm, outre le fait que je n'aime pas trop le nom de fichier "stdafx.h" (mais bon, tu appelles tes fichiers comme tu veux), j'ai une question : Ou est-ce que tu as caché ces deux fichiers? S'ils sont necessaires a ta classe, il est logique de les inclure dans le zip, non? Ou au moins d'indiquer où les trouver!
Je présume que c'est dans un de ces fichiers que tu définis par exemple les macros FREE et ALLOUEn, j'en arrive donc a ma 2eme remarque : Il me semble vraiment bizarre qu'une classe aussi simple et "bas niveau" que celle qui gere des chaines de caractères nécessite d'autres inclusions (non standard, i.e. autre chose que des fichiers du genre string.h, ctype.h, etc...)!

++
Soilwork
magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1 -
je met à jour la classe....

pour le stdafx... c'est du standard VisualC++
pour accélérer la compilation...
y a tt plein de post la dessus si tu veux te renseigner.
En gros, VC refuse de compiler si on utilise les mfc si ça y est po

sinon, ben svt je fais appel à winFormat pour les affichages dans des fenetres mfc dc avec des variables CString...

pour les noms, et bien get ,is et set sont des préfixe std

et celle que tu cite a effectivt ete corrigée.

Merci pour cette attention & à très bientot

Bruno.
Soilwork9
Messages postés
16
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
13 septembre 2004
-
Bon a part ca, quelques petites choses, comme le "place pour le nombre aaaaaaaaaaaaaaaaaaaaaaaa", que tu as du corriger depuis le temps puisqu'il etait dans la TODO list.
Par contre je vais peut-être retirer ce que j'ai dit au sujet de la bonne idee du MinMajDifferentes.. A en voir le code de l'operateur == :

// !! je ne regarde pas la casse sous windows
//(...)
#ifndef B_UNIX
if(!minMajDifferentes)
result=stricmp( c_chaine, s); //_stricmp
else
#endif /* !B_UNIX */
result=strcmp( c_chaine, s);


D'abord, je ne vois pas l'interet de mettre en place un mecanisme de gestion de la casse si tu ne l'utilises pas toujours. D'ailleurs, pourquoi est-ce que Windows ne pourrait pas prendre en compte la différence entre majuscules et minuscules? Certes, l'OS ne fait pas la distinction quand il s'agit de noms de fichiers, mais dans d'autres circonstances c'est différent. Pour gérer des mots de passe, ca peut servir par exemple (cryptés ou non). Enfin bref... De toute facon je ne comprends pas vraiment ton code:
Que signifie la constante B_UNIX, lorsqu'elle est définie? Qu'on travaille sous Unix? Ca serait logique, mais si c'est ca... le test (#ifndef B_UNIX) regarde si B_Unix n'est pas definie, ce qui veut dire qu'on travaille sous Windows (bon, ok, y a pas que Windows et Unix dans la vie, lol. Ca veut donc dire qu'on ne travaille pas sous Unix). Donc le code qui vérifie minMajDifferentes s'exécute sous Windows, mais pas sous Unix!
Enfin, j'ai peut-etre mal regardé, je suis un peu naze ce matin, mais bon, je crois pas... A moins que B_UNIX ait un autre sens, bien sur.

En tout cas, bonne journée et bonne continuation!
++
Soilwork
Soilwork9
Messages postés
16
Date d'inscription
lundi 9 août 2004
Statut
Membre
Dernière intervention
13 septembre 2004
-
Salut, je viens de voir ta reponse, a propos de StdAfx, je connais, t'inquiete pas, et je savais effectivement que c'etait un truc de Visual C++, c'est pour ca que j'ai dit que ca me plaisait pas trop ;) G++ POWER ! :P

Sinon, je te rappelle quand meme une petite chose : le titre que tu as toi-meme donné à cette page :
BSTRING : GESTION DE CHAINE POUR TOUS COMPILATEURS [GCC(DOS&UNIX), VC++,BORLAND...]

No comment, comme tu dis... ;)

PS : et Globals.hpp alors? ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.