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

silentData Messages postés 183 Date d'inscription   Statut Membre Dernière intervention   -  
scaravenger Messages postés 2685 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 :)
A voir également:

3 réponses

scaravenger Messages postés 2685 Date d'inscription   Statut Membre Dernière intervention   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 183 Date d'inscription   Statut Membre Dernière intervention   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 2685 Date d'inscription   Statut Membre Dernière intervention   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