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

SL & STL C++ Discussion :

Conversion de std::string en LPCWSTR


Sujet :

SL & STL C++

  1. #1
    Membre �clair� Avatar de Rodrigue
    Inscrit en
    Ao�t 2002
    Messages
    487
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 487
    Par d�faut Conversion de std::string en LPCWSTR
    Bonjour,

    Pas moyen de trouver comment convertir un std::string en LPCWSTR...
    J'ai essay� de le caster :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    LPCWSTR lpFileName = (TCHAR*)fileName.c_str();
    mais �a ne fonctionne pas ...

    Cordialement,
    Rodrigue

  2. #2
    Membre �clair� Avatar de Rodrigue
    Inscrit en
    Ao�t 2002
    Messages
    487
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 487
    Par d�faut
    ...en fait ce serait m�me en LPCTSTR! C'est le nom du fichier pass� dans la m�thode CreateFile.
    Quand je fais je r�cup�re un const char*

  3. #3
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    A priori c'est bien d'un const char* dont tu as besoin, tu ne devrais pas avoir de probl�me -- � moins que tu ne sois en unicode, mais dans ce cas il faut travailler avec des std::wstring.

  4. #4
    Membre �clair� Avatar de Rodrigue
    Inscrit en
    Ao�t 2002
    Messages
    487
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 487
    Par d�faut
    Ah zut! Je ne sais pas je suis en C++/CLI. Je ne me soucie pas de ce genre de chose (p-e que je devrais ). Sinon j'ai trouv� deux solutions :
    1. Utiliser CreatFileA (au lieu de CreateFileW utilis� normalement)
    2. Faire une conversion:
      Code : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
       //ANSI->Unicode
      int Size = MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, NULL, 0);
      LPWSTR wUnicode = new WCHAR[Size];
      MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, wUnicode, Size);
    Pour mes classes, je pense que c'est mieux d'utiliser std::string plut�t que std::wstring non ?

  5. #5
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Citation Envoy� par Rodrigue
    Ah zut! Je ne sais pas je suis en C++/CLI. Je ne me soucie pas de ce genre de chose (p-e que je devrais ).
    Clairement, oui, tu devrais... C'est un peu comme si tu ne savais pas si tu faisais du C ou du C++ (remarque, �a arrive parfois aussi).

    Citation Envoy� par Rodrigue
    Utiliser CreatFileA (au lieu de CreateFileW utilis� normalement)
    Si c'est CreateFileW qui est utilis� alors tu es en unicode, et il faut donc g�rer les cha�nes en unicode. Si tu ne veux pas de l'unicode alors d�sactive-le simplement.

    Citation Envoy� par Rodrigue
    Faire une conversion:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     //ANSI->Unicode
    int Size = MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, NULL, 0);
    LPWSTR wUnicode = new WCHAR[Size];
    MultiByteToWideChar (CP_ACP, 0, szAnsi, -1, wUnicode, Size);
    Si tu utilisais std::wstring tu n'en aurais pas besoin.

    Citation Envoy� par Rodrigue
    Pour mes classes, je pense que c'est mieux d'utiliser std::string plut�t que std::wstring non ?
    Ben si tu es en unicode il faudra g�rer des cha�nes unicodes, et les cha�nes unicode c'est wstring pas string. Mais �a ne change rien, c'est la m�me classe, sauf qu'elle manipule des caract�res "longs".

  6. #6
    Membre �clair� Avatar de Rodrigue
    Inscrit en
    Ao�t 2002
    Messages
    487
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 487
    Par d�faut
    Qu'est-ce qui est le mieux? Unicode ou Ansi. Je pense que l'Unicode g�re tous les caract�res (m�me chinois etc.) ?

  7. #7
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Je pense que l'Unicode g�re tous les caract�res (m�me chinois etc.) ?
    Oui, �a sert � ce genre de choses.

  8. #8
    Membre �clair� Avatar de Rodrigue
    Inscrit en
    Ao�t 2002
    Messages
    487
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 487
    Par d�faut
    Donc en fait en g�n�ral, pour �tre � m�me de pouvoir traiter tous les cas, il vaut mieux privil�gier std::wstring que std::string

    Merci pour ces informations fort utiles!

  9. #9
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Citation Envoy� par Rodrigue
    Donc en fait en g�n�ral, pour �tre � m�me de pouvoir traiter tous les cas, il vaut mieux privil�gier std::wstring que std::string
    Non, seulement si tu es en unicode. Si tu n'es pas en unicode, tu auras des probl�mes car wstring ne te renverra pas des const char*.

  10. #10
    Membre �clair� Avatar de Rodrigue
    Inscrit en
    Ao�t 2002
    Messages
    487
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 487
    Par d�faut
    Ok merci! En fait il faudrait, pour �tre le plus g�n�ral possible, que mes fonctions impl�mentent l'ANSI et l'UNICODE. Les parties du programme concern�es seraient choisies en fonction d'une directive de compilation...

  11. #11
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    typedef std::basic_string<TCHAR> t_string;

  12. #12
    Membre �clair� Avatar de Rodrigue
    Inscrit en
    Ao�t 2002
    Messages
    487
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 487
    Par d�faut
    Ah ouais pas b�te du tout ! Merci

Discussions similaires

  1. conversion de std::string
    Par 3aychoucha dans le forum C++
    R�ponses: 4
    Dernier message: 29/03/2011, 18h58
  2. conversion const std::string et const char * ?
    Par panthere noire dans le forum C++
    R�ponses: 7
    Dernier message: 28/02/2011, 15h51
  3. conversion std::string en std::istringstream
    Par flipper203 dans le forum SL & STL
    R�ponses: 3
    Dernier message: 06/07/2006, 18h34
  4. (Probl�me avec...) conversion de std::string en char
    Par crossbowman dans le forum SL & STL
    R�ponses: 7
    Dernier message: 05/03/2006, 19h54
  5. conversions std::string <---> CString
    Par Rupella dans le forum MFC
    R�ponses: 5
    Dernier message: 21/02/2006, 15h11

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