IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Copier un Cstring dans un char* est ce possible?


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut Copier un Cstring dans un char* est ce possible?
    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?

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    J'ai pas trop compris comment cela fonctionner
    Voila mon bout de programme:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    CString strOpenCap;
    char **argv;
    j'aimerai mettre strOpenCap dans *argv.

    Il faut que j'utilise strtol?

  4. #4
    Membre �clair�
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2006
    Messages
    58
    D�tails du profil
    Informations personnelles :
    �ge : 50
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Par d�faut
    argv ... comme les param�tres de ta fonction main ? Pourquoi voudrais-tu mettre quelque chose dedans ?

  5. #5
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    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 ?

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    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

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    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:

    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;
    Par contre je sais pas pourkoi, qd j essai de l'appliquer il me dit que ne sont pas d�fini.

    J'ai pourtant bien inclus le string.h.

    Je vais chercher encore

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Par d�faut
    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

    ++

  9. #9
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    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 ?

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    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:

    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);
    ...
    }
    Dans mon IHM MFC j'aimerai appell� mes fonctions depuis un bouton OK que j'ai cr�er.

    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) 
    {

  11. #11
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    voir ce post de la faq:
    http://c.developpez.com/faq/vc/?page...GetCommandLine
    dans le prog MFC tu auras la ligne de commande ...

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    Je ne comprends pas tres bien la Faq.

    Dois-je rajouter beaucoup de chose?

  13. #13
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    Pourquoi ceci ne fonctionne pas:

    dans le .h
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    virtual void OnOK(int argc, char **argv);
    dans le .cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    void CSnifferDlg::OnOK(int argc, char **argv)
    Cela compile sans erreur mais plante lors de l'appui sur le bouton OK

    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)

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    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);

  15. #15
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    213
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 213
    Par d�faut
    Merci A Tous

  16. #16
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    faire tomber le cast est dangereux !!!
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    char *adresse=(char*)LPCTSTR(strOpenCap);
    ce type de code est a proscrire.
    si l'objet CString renvoie un pointeur constant ce n'est pas pour rien .

  17. #17
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Par d�faut
    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

  18. #18
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    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.

  19. #19
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    tu voulais bien sur dire que LPCTSTR est un type qui, l�, sert � caster la surcharge const char* du CString

  20. #20
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    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.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. Copier un BYTE* dans un CHAR*
    Par niglo dans le forum C
    R�ponses: 5
    Dernier message: 21/07/2011, 15h36
  2. Ajouter un JComponent dans un JPanel est ce possible?
    Par jlassiramzy dans le forum AWT/Swing
    R�ponses: 5
    Dernier message: 23/04/2007, 21h02
  3. recevoir des donnees php dans un swf est ce possible ?
    Par carmen256 dans le forum Flash
    R�ponses: 2
    Dernier message: 09/02/2007, 14h57
  4. [C# 2.0]Une Image dans un toolTip ? Est ce possible
    Par vinsou___ dans le forum Windows Forms
    R�ponses: 3
    Dernier message: 03/06/2006, 00h28
  5. [VB5]S�lectionner du texte dans un label, est-ce possible?
    Par Silivrion dans le forum VB 6 et ant�rieur
    R�ponses: 8
    Dernier message: 14/04/2006, 00h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo