Classe de chaine de caracteres [dev-c++]

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 052 fois - Téléchargée 36 fois

Contenu du snippet

troisieme exercice de ma vie d'apprenti : creer une classe de stockage de chaines de caracteres et y integrer des fonctions équivalentes à : srtlen, srtcmp, strncmp, strcat, strcpy, strdup.
voilà ma solution :

Source / Exemple :


#include <stdlib.h>
#include <iostream.h>

class Chaine {

public:
       Chaine();                //constructeur de base
       Chaine ( char a[256] );  //constructeur avec entrée de valeur
       Chaine ( const Chaine & ) ; // constructeur - duplicateur
       char contenu[256];
       void editChaine( char a[256]);
       void printChaine ();
       int lChaine ();  // calcule la longueur d'une chaîne
       int compLongChaine ( Chaine , Chaine ); // compare les longueurs de chaines
       int compCaraChaine ( Chaine , Chaine , int ); // compare les n premier caracteres et renvoie un indication sur celle qui lache en premier
       void addChaine ( Chaine ); // ajoute une chaîne à la suite d'une autre
       void cpyChaine ( Chaine ) ; // copy une chaine dans une autre

};

Chaine::Chaine(){};

Chaine::Chaine( char a[256] ) { for (int i=0 ; i<256 ; i++) contenu[i]=a[i]; }

Chaine::Chaine( const Chaine & ch1 ) {  for (int i=0 ; i<256 ; i++) contenu[i]=ch1.contenu[i]; }

void Chaine::editChaine( char a[256] ) { for (int i=0 ; i<256 ; i++) contenu[i]=a[i];  }

void Chaine::printChaine() { cout<<contenu<<"\n"; }

int Chaine::lChaine() { int i; for (i=0 ; contenu[i] ; i++ ); return i; }

int compLongChaine ( Chaine ch1 , Chaine ch2 )  { return ( ch1.lChaine()-ch2.lChaine() ) ; }

int compCaraChaine ( Chaine ch1 , Chaine ch2 , int omega )

    { char res='0'-'0' ;
      for ( int alpha=0 ; alpha!=omega ; alpha++ )
            { res += ( ch1.contenu[alpha] - ch2.contenu[alpha] ) ; } ;
      return res ;
     }

void Chaine::addChaine ( Chaine ch2 )

    { int j=lChaine();
      for (int i=lChaine() ; i<256 ; i++ )
      { contenu[i] = ch2.contenu[(i-j)] ; } ;
     }

void Chaine::cpyChaine ( Chaine ch1 ) { for (int i=0 ; i<256 ; i++ ) contenu[i]=ch1.contenu[i] ; }

/******************************  MAIN PROGRAM  ********************************/

void main ()
{    Chaine x;
     Chaine y;
     x.editChaine("zoby la mouche");
     y.editChaine("zoby et dede le moustique");
     x.printChaine();
     y.printChaine();
     cout<<"comparaison des longueurs de chaines : "<<compLongChaine( x , y )<<"\n";
     cout<<"comparasion des 10 premiers caracteres : "<<compCaraChaine( x , y , 10 )<<"\n";
     x.addChaine ( y );
     x.printChaine();
     x.cpyChaine ( y ) ;
     x.printChaine();
     Chaine z(x);
     z.printChaine();
     system("PAUSE");
      return 0;

}

A voir également

Ajouter un commentaire Commentaires
Messages postés
134
Date d'inscription
mardi 20 novembre 2001
Statut
Membre
Dernière intervention
16 juin 2008

C'est bien pour un début, mais ta chaîne est limité à 255 caractères. Petit exercice, re-fais ta classe avec un char *contenu;
Messages postés
14
Date d'inscription
jeudi 1 août 2002
Statut
Membre
Dernière intervention
4 avril 2003

Avec des surcharges d'opérateurs ça aurait été beaucoup mieux

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.