Class String VC++

Signaler
Messages postés
7
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
2 novembre 2006
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Comment fait-on pour modifier une class String avec un tableau de char en VC++?

4 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Peux tu préciser ta question SVP ?
Parles tu des std::string , du vector<char> , de CString MFC, ou d'une classe que tu as fait toi-même.
Le principe d'une classe string de base c'est un tableau de char + longueur de chaine.
class string
{
   char* buf;
   unsigned len;

   // + constructeur de copie et destructeur car alloc dyn.
   // + tous les operator ([], +, +=, == , <, >, ect...)
   // + operator de coercition(static_cast<>)
};

il suffit d'ajouter un constructeur qui prend un tab de char.
char tabChar[] = "blabla\0";
string s(tabChar);
// puis modif a volontée
s.ModifCeQueTuVeux(paramCeQueTuVeux);

// Mais je crois que je m'égare un peu là....
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
std::string ma_string;
char* machin;
ma_string = string("coucou le monde!");
machin = ma_string.c_str();

_______________________

Omnia vincit labor improbus
Messages postés
7
Date d'inscription
dimanche 12 janvier 2003
Statut
Membre
Dernière intervention
2 novembre 2006

c'était un string de la class System::String, mais je crois en fait que
c'est pas possible de le modifier on est obligé d'en recréé un pour
l'affecter au string que l'on veut modifier.

enfin je crois.....


Exemple:

//----------------------------------------------------------

char buf[]="roro";

System::String^ txt=gcnew System::String("dada");


txt=gcnew System::String(buf);
//-----------------------------------------------------------
La question est:

    Est-ce que l'ancienne référence "dada" est éffacée de la mémoire?...
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
Dans ce cas précis oui, puisque tu l'écrase, c'est le gc qui détruira la référence mais tu ne peux plus l'utiliser dans son état premier, sauf si tu la clone avant (::Clone). Ou mieux, tu copie la référence avec ::CopyTo