J'ai un littéral de chaîne Java avec des caractères Unicode qui doit être transféré dans un littéral de chaîne C, qui est chargeable avec JNIEnv.NewString
.Échapper une chaîne Java pour le code JNI
Malheureusement, la méthode ci-dessus prend un pointeur vers un tableau de unsigned short
(jchar). J'ai essayé d'utiliser le code comme suit:
unsigned short str[] = {65, 66, 67};
jstring java_str = (*env)->NewString(env, str, 3);
Cependant, cela prend beaucoup de place, n'est pas lisible par l'homme, et il est difficile à maintenir.
Existe-t-il un moyen de convertir un littéral de chaîne en unsigned short[]
en C, tout en continuant à utiliser les caractères UTF-16 de Java?
Cette échappatoire peut-elle être effectuée par programme? c'est-à-dire convertir un java.lang.String
en un littéral de chaîne qui fonctionnerait dans le code source C.
C possède des chaînes étendues, malheureusement, il est spécifié dans l'implémentation quels jeux de caractères ils utilisent, sauf si vous pouvez utiliser C11 –
Un littéral de chaîne C est en lecture seule. Mais essayez-vous de générer du code source C? –
Je préférerais ne pas récupérer une tonne de chaînes manuellement, donc ce serait bien de générer les littéraux. Si ce n'est pas possible, je peux leur échapper manuellement. – konsolas