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

C++ Discussion :

[C++]LPSTR to CString


Sujet :

C++

  1. #1
    Membre confirmé Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut [C++]LPSTR to CString
    j'ai un petit peu de difficulté avec l'Unicode et l'Ansi depuis que je suis sous Visual Studio 2005

    je sais comment passer de CString a LPSTR mais l'enverse je trouve pas

  2. #2
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    LPSTR est un char*

    CString s = ta_chaine;
    Ca devrait fonctionner.

  3. #3
    Membre confirmé Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    ca fonctionne mais ca m'affiche pas ce que je veux car je communique avec un peripherique exterieur qui m'envoie via un LPSTR une chaine Ansi et ca m'affiche en Unicode

  4. #4
    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
    Par défaut
    Tu es sous Visual 2005 ?

  5. #5
    Membre confirmé Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    ouep

  6. #6
    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
    Par défaut
    Tu es en Character Set : "Use Unicode character set" ?
    Utilise un CStringA pour ne plus avoir de caractère Unicode et fonctionner en ANSI

  7. #7
    Membre chevronné Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par défaut
    Citation Envoyé par Mayti4
    LPSTR est un char*
    Pas toujours...
    TCHAR c'est un char quand UNICODE n'est pas défini, mais c'est un w_tchar quand UNICODE est défini.
    Donc si ton application accepte l'unicode, alors quand UNICODE est défini alors LPSTR n'est pas un char* mais un w_tchar*... Et avec ça tu ne peux pas construire une std::string.
    Il faut que tu construise une std::wstring

  8. #8
    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
    Par défaut
    Citation Envoyé par Rafy
    Pas toujours...
    TCHAR c'est un char quand UNICODE n'est pas défini, mais c'est un w_tchar quand UNICODE est défini.
    Donc si ton application accepte l'unicode, alors quand UNICODE est défini alors LPSTR n'est pas un char* mais un w_tchar*... Et avec ça tu ne peux pas construire une std::string.
    Il faut que tu construise une std::wstring
    Je pense que Cidran utilise les string des MFC et pas les std::string

  9. #9
    Membre chevronné Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par défaut
    Ben il l'a pas dis, mais ce que j'ai dis n'est pas faux tout de même

  10. #10
    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
    Par défaut
    En effet

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    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 392
    Par défaut
    Si, c'est faux: LPSTR est TOUJOURS un char *.
    c'est LPTSTR qui change...

    Quant aux CString, cela dépend de la version de Visual studio : Sous Visual 6, elles sont toujours en TCHAR.
    Sous les versions supérieures, on a le template CStringT et les constructeurs font la conversion: quel que soit le type de la chaîne en entrée, la CString en sortie sera en TCHAR...

    PS: Windows utilise la macro UNICODE, MFC et le C standard utilisent _UNICODE.
    Un conseil: Toujours commencer par s'assurer que les deux ou aucun sont définis.
    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.

  12. #12
    Membre confirmé Avatar de Cirdan Telemnar
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    pour le moment j'ai definis mon projet pour qu'il ne soit pas en Unicode mais il faudrat que je trouve une solution

Discussions similaires

  1. conversion : VARIANT FAR* URL vers CString
    Par kam dans le forum MFC
    Réponses: 2
    Dernier message: 29/03/2004, 13h32
  2. [MFC][WinCE] Longueur maxi de CString?
    Par Sunny dans le forum MFC
    Réponses: 3
    Dernier message: 28/01/2004, 14h40
  3. Réponses: 2
    Dernier message: 21/01/2004, 17h59
  4. LPSTR vs CHAR*
    Par Heaven dans le forum Windows
    Réponses: 3
    Dernier message: 10/12/2003, 00h45
  5. Convertion de type VARIANT à type CString
    Par j_grue dans le forum MFC
    Réponses: 2
    Dernier message: 07/11/2002, 14h18

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