[C++ Builder] AnsiString et char *, etc ...

AnsiString et char *, etc ... [C++ Builder] - Programmation

Marsh Posté le 24-02-2002 à 17:32:45    

Hello, j'aimerais une mise au point concernant le type chaine de caractère en C++, et particulièrement le AnsiString, fait-il partie du C++, ou bien non ?
 
Et comment utiliser le char, j'y arrive en fait, mais sans comprendre, et j'aime pas utiliser quelque chose sans comprendre.
 
Quell est la différence entre :
 
char a[255];
strcpy(a, "salut" );
 
et
 
char *a = "salut";
 
Comment ça se fait que cette déclaration marche, le pointeur vers a (*a) n'est pas une chaîne de cara !!!
 
 
J'utilise sans comprendre, et ça m'énerve... :cry:  :cry:  :cry:  :cry:


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 24-02-2002 à 17:32:45   

Reply

Marsh Posté le 24-02-2002 à 17:50:59    

et aussi quel est l'intérêt d'utiliser des pointeurs pour des chaines en char ???


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 24-02-2002 à 19:42:52    

la sol2 cree un tableau de 6 cases, soit 5 caractères + un '\0'
 
pour les AnsiString, je crois que c'est un truc propre à Borland, pour donner un équivalent des long string du Pascal (Delphi).
c'est un peu dans le même genre que la classe string de la STL, moins portable mais plus pratique à utiliser (je trouve)
pour avoir une chaine char* a partir d'une AnsiString il faut appeler la méthode c_str() de la classe AnsiString
 
AnsiString a;
char b[255];
 
a = "Salut";
strcpy(b, a.c_str());


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 24-02-2002 à 21:21:10    

l'intéret des pointeurs est qu'il utilise seulement la mémoire nécessaire pour ta chaine, de plus tu pourras changer le contenu de ta chaine sans te préoccuper de la mémoire, si je me souviens bien...


---------------
Borland rulez: http://pages.infinit.net/borland
Reply

Marsh Posté le 24-02-2002 à 23:40:02    

heu si dans  
 
char * ="salut";
 
tu mets une plus grande chaine que salut tu écrase la memoire qui suit, sans savoir à quoi elle appartenait.
 
Pour des chaînes donc l'occupation mémoire change automatiquement lors de leur assignation en C/C++ faut utiliser une classe, genre AnsiString, CString, string (STL), ...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 25-02-2002 à 16:19:04    

thx to all !!!
 
Le AnsiString ne fait donc pas partie du C++. J'zi l'intention de programmer (plus tard) sous nunux, je dois donc essayer de l'éviter le plus possible !!!.
Pour la conversion (a.c_str());, je connaissais déjà, thx, mais je trouve pas ça propre, mais je suis bien obligé.
 
Pour récupérer le contenu d'un Edit (Edit1->Text), je suis obligé de le faire dans du AnsiString, ou bien dans un pointeur (char *a) ? (désolé j'ai pas C++ Builder sous la main pour essayer ...)
 
 
os2, ton site maintenant, c'est www.borlandrulez.fr.fm !!!


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 25-02-2002 à 16:39:32    

AnsiString a;
char b[1024];
 
a = Edit1->Text;
strcpy(b, Edit1->Text.c_str());
 
 
avec C++Builder sous Linux qui va venir ça sera plus pratique à porter ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed