Convertir CSsortingng en const char *

Comment convertir de CSsortingng en const char* dans mon application Unicode MFC?

    Pour convertir un TCHAR TCHAR TCHAR format ASCII, utilisez la macro CT2A – cela vous permettra également de convertir la chaîne en UTF8 (ou toute autre page de code Windows):

     // Convert using the local code page CSsortingng str(_T("Hello, world!")); CT2A ascii(str); TRACE(_T("ASCII: %S\n"), ascii.m_psz); // Convert to UTF8 CSsortingng str(_T("Some Unicode goodness")); CT2A ascii(str, CP_UTF8); TRACE(_T("UTF8: %S\n"), ascii.m_psz); // Convert to Thai code page CSsortingng str(_T("Some Thai text")); CT2A ascii(str, 874); TRACE(_T("Thai: %S\n"), ascii.m_psz); 

    Il existe également une macro pour convertir à partir de ASCII -> Unicode ( CA2T ) et vous pouvez les utiliser dans les applications ATL / WTL tant que vous avez VS2003 ou supérieur.

    Voir le MSDN pour plus d’informations.

    Si votre CSsortingng est Unicode, vous devrez effectuer une conversion en caractères multi-octets. Heureusement, il existe une version de CSsortingng qui le fera automatiquement.

     CSsortingng unicodestr = _T("Testing"); CSsortingngA charstr(unicodestr); DoMyStuff((const char *) charstr); 

    Remarque: cette réponse est antérieure à l’exigence Unicode; voir les commentaires

    Il suffit de lancer:

     CSsortingng s; const TCHAR* x = (LPCTSTR) s; 

    Cela fonctionne parce que CSsortingng a un opérateur de dissortingbution pour faire exactement cela.

    Utiliser TCHAR rend votre code indépendant de Unicode; Si vous n’êtes pas préoccupé par Unicode, vous pouvez simplement utiliser char au lieu de TCHAR .

    Il y a un transtypage explicite sur CSsortingng vers LPCTSTR, vous pouvez donc le faire (à condition que unicode ne soit pas spécifié):

     CSsortingng str; // .... const char* cstr = (LPCTSTR)str; 

    J’avais un problème similaire. J’avais un tampon char* avec le nom .so.
    Je n’ai pas pu convertir la variable char* en LPCTSTR . Voici comment je l’ai contourné …

     char *fNam; ... LPCSTR nam = fNam; dll = LoadLibraryA(nam); 

    Je vous recommande d’utiliser TtoC de ConvUnicode.h

     const CSsortingng word= "hello"; const char* myFile = TtoC(path.GetSsortingng()); 

    C’est une macro pour faire des conversions par Unicode

    Macros de conversion générique (la section Autres considérations TN059 est importante):

     A2CW (LPCSTR) -> (LPCWSTR) A2W (LPCSTR) -> (LPWSTR) W2CA (LPCWSTR) -> (LPCSTR) W2A (LPCWSTR) -> (LPSTR) 
    • TN059: Utilisation des macros de conversion MFC MBCS / Unicode