La conversion de type const char * LPTSTR sans USES_CONVERSTION
Je suis en train de convertir const char * LPTSTR. Mais je ne veux pas utiliser USES_CONVERSION pour l'effectuer.
Voici le code que j'ai utilisé pour convertir l'aide de USES_CONVERSION. Est-il un moyen de convertir en utilisant sprintf ou tcscpy, etc..?
USES_CONVERSION;
jstring JavaStringVal = (some value passed from other function);
const char *constCharStr = env->GetStringUTFChars(JavaStringVal, 0);
LPTSTR lpwstrVal = CA2T(constCharStr); //I do not want to use the function CA2T..
OriginalL'auteur Santron Manibharathi | 2013-02-04
Vous devez vous connecter pour publier un commentaire.
LPTSTR
dispose de deux modes:Un
LPWSTR
siUNICODE
est définie, unLPSTR
autrement.ou par l'autre sens:
si votre
LPTSTR
est non-unicode:selon MSDN Plein MS-DTYP IDL documentation,
LPSTR
est untypedef
dechar *
:de sorte que vous pouvez essayer ceci:
OriginalL'auteur Reza Ebrahimi
USES_CONVERSION et liées macros sont la meilleure façon de le faire. Pourquoi ne pas les utiliser? Mais vous pouvez toujours vérifier si l'UNICODE ou _UNICODE macros sont définies. Si aucun d'eux n'est défini, aucune conversion n'est nécessaire. Si l'un d'eux est défini, vous pouvez utiliser MultiByteToWideChar pour effectuer la conversion.
En fait, c'est une chose stupide à faire. JNIEnv alreay a une méthode pour obtenir les caractères en Unicode: JNIEnv::GetStringChars. Il suffit donc de vérifier pour l'UNICODE et _UNICODE macros pour savoir quelle est la méthode à utiliser:
En fait, sauf si vous souhaitez passer la chaîne à une méthode qui attend un LPTSTR, vous devriez utiliser la version Unicode. Java, les chaînes de caractères sont stockées au format Unicode en interne, de sorte que vous n'aurez pas de frais généraux de la conversion, en plus des chaînes Unicode sont juste mieux en général.
OriginalL'auteur user1610015