Comment convertir de CString
a const char*
dans mon application MFC Unicode ?
J'ai déjà eu la réponse à la question un peu plus tôt et vous avez raison, j'ai utilisé la macro CT2A. Merci.
Comment convertir de CString
a const char*
dans mon application MFC Unicode ?
Pour convertir un TCHAR
CString en ASCII, utilisez la fonction CT2A
qui vous permettra également de convertir la chaîne en UTF8 (ou toute autre page de code Windows) :
// Convert using the local code page
CString str(_T("Hello, world!"));
CT2A ascii(str);
TRACE(_T("ASCII: %S\n"), ascii.m_psz);
// Convert to UTF8
CString str(_T("Some Unicode goodness"));
CT2A ascii(str, CP_UTF8);
TRACE(_T("UTF8: %S\n"), ascii.m_psz);
// Convert to Thai code page
CString str(_T("Some Thai text"));
CT2A ascii(str, 874);
TRACE(_T("Thai: %S\n"), ascii.m_psz);
Il y a aussi une macro pour convertir de ASCII -> Unicode ( CA2T
) et vous pouvez les utiliser dans des applications ATL/WTL à condition d'avoir VS2003 ou une version supérieure.
Voir le MSDN pour plus d'informations.
J'ai déjà eu la réponse à la question un peu plus tôt et vous avez raison, j'ai utilisé la macro CT2A. Merci.
CA2T
fait no convertir en Unicode. Il convertit en un TCHAR
qui peuvent ou non représenter des caractères Unicode. CA2[C]W
est la macro qui convertit en Unicode.
Note : Cette réponse est antérieure à l'exigence d'Unicode ; voir les commentaires.
Il suffit de le lancer :
CString s;
const TCHAR* x = (LPCTSTR) s;
Cela fonctionne parce que CString possède un opérateur cast pour faire exactement cela.
L'utilisation de TCHAR rend votre code indépendant de l'Unicode ; si vous n'êtes pas concerné par l'Unicode vous pouvez simplement utiliser char
au lieu de TCHAR
.
Lorsque j'essaie votre méthode, j'obtiens cette erreur : "Error 1 error C2664 : 'CppSQLite3DB::execDML' : cannot convert parameter 1 from 'const TCHAR'. Les paramètres de mon projet utilisent Unicode mais la fonction CppSQLite3DB::execDML nécessite un const char. paramètre.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
5 votes
Le fait que vous construisiez un programme unicode est la clé de ce problème - S'IL VOUS PLAÎT, ajoutez cette information à la question. (ou que quelqu'un avec un représentant le fasse ?)