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

silentData Messages postés 201 Statut Membre -  
scaravenger Messages postés 3055 Statut Membre -
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 :)
A voir également:

3 réponses

scaravenger Messages postés 3055 Statut Membre 617
 
As tu dimensionné ou initialisé ton char* s avant l'appel de setSize()?
Quel message d'erreur obtiens tu?
0
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
scaravenger Messages postés 3055 Statut Membre 617
 
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