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 :

Convertion CString => char *


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Inactif
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 152
    Par d�faut Convertion CString => char *
    Bonjour,

    Comment convertir un "CString" en "char *" :

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    c'est un multipost, �a... En plus, tu as d�j� la r�ponse...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    CString::GetString()

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Comme dit dans son autre post, la classe CString ne poss�de pas de m�thode GetString() (quel que soit le document dont vous tirez cela, il doit �tre erron�)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Tu peux avoir raison si tu utilises Visual C++ 6.0

    Mais avec la version .NET la classe CString a �t� refondu en une classe template plus performante et partage les libraires MFC et ATL

    Le membre GetString existe effectivement car la classe template CStringT dont CString est un typedef d�rive de la classe template CSimpleStringT

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    template<typename BaseType, class StringTraits> class CStringT : 
    public CSimpleStringT<BaseType>
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    typedef ATL::CStringT<TCHAR, StrTraitMFC<TCHAR>> CString;
    Si GetString() n'est pas un membre de CString mais c'est un membre de sa classe de base CSimpleStringT et donc un appel CString::GetString() est faisable.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    PCXSTR GetString() const throw();
    avec PCXSTR un typedef LPCSTR ou LPCWSTR selon que l'UNICODE est fix� ou pas et tu obtient finalement ton char*.

    Et donc avec une version sup�rieure � 6.0 je crois que tu as ton CString en char*

    Mais tu peux faire des conversions comme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     CString strText = "Quel case tête la conversion";
    char* pszText;
    pszText = (LPTSTR) (LPCTSTR) strText;
    Voil�

    Gabrielly

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ah, c'est du ATL...

    Je me demande si c'est toujours une classe de base en MFC normal, �a ne m'�tonnerais pas.
    De puls, je n'ai pas consult� la doc de visual 6, mais celle du site de MSDN, o� la classe CString n'a toujours pas de m�thode GetString...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Inactif
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    152
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 152
    Par d�faut
    merci pour ta reponce detailler

  8. #8
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    mais convertir un pointeur const en non-const, �a va faire hurler bcp de monde.
    un conseil, signale-le explicitement avec l'op�rateur c++ const_cast pour t'�viter de cr�er des bugs quand tu retoucheras � ton code...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre �m�rite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par d�faut
    Voici les classes partag�es entre MFC et ATL apr�s le 6.0

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfclassessharedbetweenmfcandatl.asp

    voici la classe template dont CString est un typedef

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfcstringt.asp

    PCXSTR GetString( ) const throw( );
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/vclrfcsimplestringtgetstring.asp

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    CString str = "Je convertit en const char*";
    const char* pcszText = str.GetString(); // j'empreinte GetString() par héritage
    J'utilise CString indiff�remment d'un projet MFC ou ATL.

  10. #10
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ah, je vois, c'est � partir de .net...
    Les headers signal�s dans l'aide ne sont ni dans visual 6, ni dans le SDK de f�vrier 2003... Il serait temps que je me mette � jour (mais ��)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Par d�faut
    Sinon, j'utilse

    CString str;
    str.GetBuffer();

    et ca marche

    ++

  12. #12
    Membre extr�mement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par d�faut
    En effet, GetString n'appartient pas � CString!!! Si on saisie le point, il s'affichera en effet dans la liste mais on aura l'erreur:

    error C2664: 'CUtils:rocessError'*: impossible de convertir le param�tre 1 de 'ATL::CSimpleStringT<BaseType,t_bMFCDLL>:CXSTR' en 'char *'
    with
    [
    BaseType=char,
    t_bMFCDLL=true
    ]
    alors qu'avec GetBuffer() qui retourne aussi PCXSTR, je n'ai pas cette erreur!

    En fait, qu'est-ce que cela fait un GetBuffer sans param�tre, quand est-ce qu'on lui donne un param�tre!

    PS: d�sol� si j'ai remont� ce vieux sujet
    randriano.dvp.com
    D�veloppeur. Product Owner [Agile]. Sites web, mobile apps, syst�me d'information (SI).

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Convertion string en char*
    Par krolineeee dans le forum C++
    R�ponses: 9
    Dernier message: 24/07/2006, 14h35
  2. TinyXml, CString et char *
    Par Bmagic dans le forum MFC
    R�ponses: 1
    Dernier message: 09/06/2006, 12h01
  3. Convertion CString en char *
    Par Bmagic dans le forum MFC
    R�ponses: 1
    Dernier message: 07/06/2006, 16h09
  4. [unicode] Convertir CString en Char[]
    Par dacid dans le forum Visual C++
    R�ponses: 7
    Dernier message: 31/05/2006, 09h22
  5. [MFC] Probl�me de conversion CString vers Char *
    Par Darkenshin dans le forum MFC
    R�ponses: 10
    Dernier message: 02/12/2005, 14h42

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