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

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

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.