android - 在Android Ndk编程中获取UTF字符串

标签 android string android-ndk utf

如您所见,我从 utf 字符串中获取了 jbyte *str。那么字符串的每个字符有两个 jbytes 否则一个字节?

JNIEXPORT jstring JNICALL 

Java_Prompt_getLine(JNIEnv *env, jobject obj, jstring prompt) { 

    char buf[128];
    const jbyte *str;
    str = (env)->GetStringUTFChars(env, prompt, NULL);

    if (str == NULL) { 
        return NULL; / OutOfMemoryError already thrown */ 
    }

    printf("%s", str);

    (*env)->ReleaseStringUTFChars(env, prompt, str); 
    /* We assume here that the user does not type more than * 127 characters */ 
    scanf("%s", buf);

    return (*env)->NewStringUTF(env, buf);
}

最佳答案

这里:

str = (env)->GetStringUTFChars(env, prompt, NULL);

您收到单字节字符缓冲区。你甚至可以在这里编辑它:

const char *str = (env)->GetStringUTFChars(env, prompt, NULL);

因为 GetStringUTFChars() 被声明为返回 const char *

关于android - 在Android Ndk编程中获取UTF字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7396053/

相关文章:

java - 将 Toast 与 BufferedReader 一起使用

c - 哪种排序算法对 c 中具有唯一元素的结构数组快速

java - Android JNI 基本应用程序在运行时出现异常 - java.lang.ExceptionInInitializerError、java.lang.UnsatisfiedLinkError

java - Android 创建自定义注释

java - 填充微调器时 dataAdapter 显示为 null 但它包含值

string - 如何将结构或 JSON 转换为原始字符串?

将 int 转换为字符串并连接结果

android - 使用 Android NDK 发现蓝牙

android - 未能实例化 com.android.menubar.internal.MenuBarEnhancerCocoa

android - Motorola CLIQ XT 上的网络接口(interface)名称是什么?