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?
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 ?
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int main(int argc, char **argv) {.... capt_off(argc,argv); ... }
Ais-je le droit de faire ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ...
Je ne comprends pas tres bien la Faq.
Dois-je rajouter beaucoup de chose?
Pourquoi ceci ne fonctionne pas:
dans le .h
dans le .cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 virtual void OnOK(int argc, char **argv);
Cela compile sans erreur mais plante lors de l'appui sur le bouton OK
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void CSnifferDlg::OnOK(int argc, char **argv)
alors que ceci fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 virtual void OnRangeUpdateRadio(UINT nID);
Code : Sélectionner tout - Visualiser dans une fenêtre à part void CSnifferDlg::OnRangeUpdateRadio(UINT nID)
Pour cloturer (pour ma part) cette discussion
la conversion Cstring-> char* j'ai suivi les conseils d'isidore:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CString strOpenCap; char *adresse=(char*)LPCTSTR(strOpenCap);
salut,
faire tomber le cast est dangereux !!!
ce type de code est a proscrire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char *adresse=(char*)LPCTSTR(strOpenCap);
si l'objet CString renvoie un pointeur constant ce n'est pas pour rien .
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
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager