Class String VC++

keos31 Messages postés 7 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 2 novembre 2006 - 2 nov. 2006 à 11:28
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 3 nov. 2006 à 00:22
Comment fait-on pour modifier une class String avec un tableau de char en VC++?

4 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
2 nov. 2006 à 15:04
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à....
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
2 nov. 2006 à 15:45
std::string ma_string;
char* machin;
ma_string = string("coucou le monde!");
machin = ma_string.c_str();

_______________________

Omnia vincit labor improbus
0
keos31 Messages postés 7 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 2 novembre 2006
2 nov. 2006 à 21:29
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?...
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
3 nov. 2006 à 00:22
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
0
Rejoignez-nous