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++/CLI Discussion :

Conversation de LPWSTR � LPCSTR


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2006
    Messages
    249
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Ao�t 2006
    Messages : 249
    Par d�faut Conversation de LPWSTR � LPCSTR
    Bonjour,


    Je cherche comment faire la conversion de LPWSR vers LPCSTR. Voice le code simplifi� du petit programme.

    szArgList est du type LPWSTR mais WinExec attend comme premier param�tre LPCSTR et je n'ai pas trouv� une autre version pour CommandLineToArgvW comme CommandLineToArgv

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
    int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                         _In_opt_ HINSTANCE hPrevInstance,
                         _In_ LPWSTR    lpCmdLine,
                         _In_ int       nCmdShow)
    {
     LPWSTR *szArgList;
     int argCount;
     
     szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);                           
     
    ...   code de validation etc. supprimé pour clarté
     
      // Problème de conversion LPWSTR à LPCSTR avec szArgList[1]   
      WinExec(  szArgList[1]  ,   SW_SHOWDEFAULT);                                                  
     }
     
     LocalFree(szArgList);
     return 0;
    }

    Merci pour vos suggestions.

  2. #2
    Membre Expert Avatar de ed73170
    Homme Profil pro
    D�veloppeur ind�pendant
    Inscrit en
    Mai 2009
    Messages
    765
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 63
    Localisation : France, Savoie (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur ind�pendant

    Informations forums :
    Inscription : Mai 2009
    Messages : 765
    Par d�faut
    Bonjour,

    La fonction WideCharToMultiByte est faite pour �a. https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

  3. #3
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504

  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
    Personnellement, j'aime bien utiliser ces fonctions:
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //String conversion functions
    string GetStringA(string s) { return s; }
    string GetStringA(wstring s, int codePage=CP_ACP)
    {
    	int cbBufSize = WideCharToMultiByte(codePage, 0, s.c_str(), -1, NULL, 0, NULL, NULL);
    	vector<char> buf(cbBufSize);
    	WideCharToMultiByte(codePage, 0, s.c_str(), -1, &buf[0], cbBufSize, NULL, NULL);
    	string ret(&buf[0]);
    	return ret;
    }
    wstring GetStringW(string s, int codePage=CP_ACP)
    {
    	int cchBufSize = MultiByteToWideChar(codePage, 0, s.c_str(), -1, NULL, 0);
    	vector<wchar_t> buf(cchBufSize);
    	MultiByteToWideChar(codePage, 0, s.c_str(), -1, &buf[0], cchBufSize);
    	wstring ret(&buf[0]);
    	return ret;
    }
    wstring GetStringW(wstring s) { return s; }
    //String conversion functions with a code page ID
    string GetStringA(string s, int codePage) { return GetStringA(GetStringW(s), codePage); }
    wstring GetStringW(wstring s, int codePage) { (void)codePage; return s; }
    On peut faire plus performant depuis C++11 (avec les nouvelles garanties sur les donn�es des std::string), mais le code que j'ai post�, m�me s'il fait une copie inutile, est simple � coder et � comprendre, et marche quelle que soit la version de C++.
    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.

Discussions similaires

  1. Conversion de LPWSTR
    Par Kemanke dans le forum MFC
    R�ponses: 7
    Dernier message: 08/03/2007, 10h13
  2. Conversions de chaines en pointeurs LPCSTR
    Par dacid dans le forum C++
    R�ponses: 27
    Dernier message: 17/05/2006, 10h34
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de donn�es
    R�ponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    R�ponses: 2
    Dernier message: 06/08/2002, 11h25
  5. R�ponses: 2
    Dernier message: 05/06/2002, 12h29

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