Comment convertir QString à LPCSTR (Unicode)
comment puis-je convertir des QString à LPCSTR ?
Comment dois-je faire lorsque #ifdef UNICODE est défini, et quand il ne l'est pas ?
Merci beaucoup 🙂
Vous devez vous connecter pour publier un commentaire.
Je suppose:
LPCSTR
est toujours définie commechar*
. Vous êtes confus que avecLPCTSTR
(note T), ce qui peut carte soitconst char*
ouconst wchar_t*
, selon siUNICODE
est défini.QString
peut toujours tenir Unicode;LPCSTR
n'est jamais Unicode. Cela signifie que vous avez à considérer que faire avec les caractères qui ne conviennent pas. Ce n'est pas une "méthode" de la question, mais une question de conception.C'est tout à fait possible que, dans votre cas, vous devez absolument connaître que le
QString
seulement contaisn des personnages de vos locaux "ANSI" codepage (aussi connu commeACP
). Dans ce cas, la fonction estQString::toLocal8Bit ()
.Sinon, vous savez peut-être que le
QString
contient uniquement les caractères de Latin1 (ISO 8859-1). Dans ce cas, la fonction estQString::toLatin1()
.Vous pouvez essayer d'appeler
QString::toUtf8()
. Ce sera toujours de produire valide d'un tableau d'octets, même si leQString
contenait tous les caractères Unicode. Cependant, officiellement, vous ne pouvez pas pointer unLPCSTR
: l'UTF-8 n'est pas valideACP
page de codes. Et sans doute, vous voulez que cetteLPCSTR
de passer à une autre fonction à l'extérieur de votre contrôle. Il est probable que la fonction ne s'attendent UTF-8. Si il s'attendait à ce Unicode à tous, il faudrait uneLPCWSTR
.J'ai trouvé la solution suivante de ici et il fonctionne parfaitement pour moi:
ce n'est pas unicode, puis
typedef __nullterminated CONST CHAR *LPCSTR, *PCSTR;
LPCTSTR
vous pensez.