Voila j'ai une variable de type Cstring que je souhaiterai copier dans un char *, est ce possible?
Sinon quel moyen ais je pour contourner ce probleme?
Version imprimable
Voila j'ai une variable de type Cstring que je souhaiterai copier dans un char *, est ce possible?
Sinon quel moyen ais je pour contourner ce probleme?
C'est sur la FAQ :
http://c.developpez.com/faq/vc/?page=Conversions
J'ai pas trop compris comment cela fonctionner
Voila mon bout de programme:
j'aimerai mettre strOpenCap dans *argv.Code:
1
2
3CString strOpenCap; char **argv;
Il faut que j'utilise strtol?
argv ... comme les param�tres de ta fonction main ? Pourquoi voudrais-tu mettre quelque chose dedans ?
En fait, tu dois allouer un espace m�moire �gal � la longueur de la cha�ne +1, puis tu appelles la m�thode qui permet de retourner un const char* et tu fais un strncpy.
Mais pourquoi dois-tu faire cela ?
en fait j'ai une fonction qui me permet d'ouvrir un fichier; qui a en parametre argv, qui est le chemin pour acceder au fichier.
La je ss en train de r�aliser une IHM. J'ai cr�er un Browser qui me renvoi dans un Cstring le chemin du repertoire ou mon fichier se trouve.
Et je souhaite donc avant d'appeller ma fonction placer
oups...
Et je souhaite donc avant d'appeller ma fonction placer la variable Cstring dans mon *argv.
Je vais essayer ce que vous m'avez dit.
J'ai touv� un truc dans MSDN:
Par contre je sais pas pourkoi, qd j essai de l'appliquer il me dit queCode:
1
2
3
4
5
6 // Convert to a char* const size_t newsize = 100; char nstring[newsize]; strcpy_s(nstring, orig); strcat_s(nstring, " (char *)"); cout << nstring << endl;
ne sont pas d�fini.Code:strcpy_s et strcat_s
J'ai pourtant bien inclus le string.h.
Je vais chercher encore
http://www.developpez.net/forums/sho...d.php?t=146227
regarde mon dernier post
suis pass� directement d'un Cstring � un a char * en une ligne
++
salut,
si argv est le pointeur des arguments d'un programme ,c'est une tr�s mauvaise id�e de vouloir ecrire dedans....
c'est une zone allou�e en memoire quid de sa taille initiale ?
:D
En fait je ss en train de passer un programme en C en une IHM en C++.
J'utilise les MFC.
D�ja en C j'avais mon main qui d�marer comme ceci:
Dans mon IHM MFC j'aimerai appell� mes fonctions depuis un bouton OK que j'ai cr�er.Code:
1
2
3
4
5
6 int main(int argc, char **argv) {.... capt_off(argc,argv); ... }
Ais-je le droit de faire ca:
Code:
1
2 void CSnifferDlg::OnOK(int argc, char **argv) {
voir ce post de la faq:
http://c.developpez.com/faq/vc/?page...GetCommandLine
dans le prog MFC tu auras la ligne de commande ...
:D
Je ne comprends pas tres bien la Faq.
Dois-je rajouter beaucoup de chose?
Pourquoi ceci ne fonctionne pas:
dans le .h
dans le .cppCode:
1
2 virtual void OnOK(int argc, char **argv);
Cela compile sans erreur mais plante lors de l'appui sur le bouton OKCode:
1
2 void CSnifferDlg::OnOK(int argc, char **argv)
alors que ceci fonctionne
Code:
1
2 virtual void OnRangeUpdateRadio(UINT nID);
Code:void CSnifferDlg::OnRangeUpdateRadio(UINT nID)
Pour cloturer (pour ma part) cette discussion
la conversion Cstring-> char* j'ai suivi les conseils d'isidore:
Code:
1
2
3 CString strOpenCap; char *adresse=(char*)LPCTSTR(strOpenCap);
Merci A Tous
salut,
faire tomber le cast est dangereux !!!
ce type de code est a proscrire.Code:
1
2 char *adresse=(char*)LPCTSTR(strOpenCap);
si l'objet CString renvoie un pointeur constant ce n'est pas pour rien .
:D
honnetement , je capte que dalle � vos truc.
et la faq est vraiment pas compr�hensible pour un d�butant, pour moi c plus un pense bete pour les pro, parce qu'il manque des explication d�taill�es ligne par lignes
si l'objet CString renvoie un pointeur constant ce n'est pas pour rien .
->je savais meme pas que que cstring renvoyait un pointeur, et je sais meme pas c quoi un LPCTSTR chais pas quoi, j'ai trouv� une ligne de code sur le net, �a a march� c tt ce qui compte lolzz :mouarf:
C'est LPCTSTR qui renvoie un pointeur, c'est une fonction qui prend un CString et qui renvoie un pointeur vers un const char*. LA FAQ, c'est spur que c'est bien, mais la doc, c'est toujours plus exhaustif.
tu voulais bien sur dire que LPCTSTR est un type qui, l�, sert � caster la surcharge const char* du CString
C'est vrai que j'ai pas v�rifi�...
Apparemment, �a a l'air d'�tre une macro de conversion vers un const char*, mais j'ai du mal � trouver sa d�finition...
D'ailleurs, il ne faudrait pas utiliser (char*), mais plut�t un static_cast ou qqch du genre.