Modifier la taille d'un char* en C++

silentData Messages postés 201 Statut Membre -  
scaravenger Messages postés 2691 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Moi qui suit à fond java, dès le moment où je dois retoucher le C++ et ses pointeurs, je m'en sort plus :'(

Voilà donc mon problème :

Je crée une classe String avec un attribut char* s qui représente la chaîne de caractère.

J'ai créé une méthode setSize() pour redimensionner la taille de ma chaîne... Cependant, je n'arrive pas à la faire fonctionner... Voici mon code actuel :

void String::setSize(int size){  
   char *tmp = new char[size+1]; //Je crée une chaine temp. avec la nouvelle taille  
   strcpy(tmp, this->s); //Je copie la valeur actuelle de la chaîne  
   delete[] this->s; //Je désalloue mon attribut  
   this->s = new char[size+1]; //Je redéfini l'attribut à la bonne taille  
   strcpy(this->s, tmp); //Je copie la valeur de la chaîne temporaire dans l'attribut  
}


Est-ce que qqun pourrait m'aider ?

Merci :)

3 réponses

  1. scaravenger Messages postés 2691 Date d'inscription   Statut Membre Dernière intervention   625
     
    As tu dimensionné ou initialisé ton char* s avant l'appel de setSize()?
    Quel message d'erreur obtiens tu?
    0
  2. silentData Messages postés 201 Statut Membre 40
     
    Oui, il est bien initialisé au début et utilisé...

    Je n'ai pas de message d'erreur, mais la valeur et la taille de s ne change pas...

    J'ai essayé d'y aller pas-à-pas, mais au moment où je fais this->s = new char[size+1]; la taille de s n'a pas changé...
    0
  3. scaravenger Messages postés 2691 Date d'inscription   Statut Membre Dernière intervention   625
     
    Comment vérifies tu la taille de s?
    Quand tu fais
    strcpy(tmp,this->s );
    puis
    strcpy(this->s ,tmp);
    je crois que la longueur de s sera limitée par le caractère nul "\0"
    Doinc inchangée
    Mais n'empêche pas l'espace alloué d'être plus grand.
    0