Technical Docs/Android
NDK Jstring to string (char *) 문자열 변경
뚜봄뚜봄
2021. 12. 8. 20:38
JString to C++ string
NDK 를 사용할 때 Java에서 Argu를 통해 String 형식을 보내줘야 할 때가 있음

그러면 해당 string을 받는쪽에서 다른 변수(int ...) 같은 경우에는 jint 형으로 받아서 처리가 가능함
그런데 String 같은 경우에는 C++ 에서 재사용하는 경우 Jstring 에서 C++ String 형으로 변환을
해줘야 정상적으로 사용이 가능함
Java에서 사용하는 String은 16비트의 Unicode 문자세트를 사용하고, C, C++ 에서는 일반적으로 8bit 의 문자열을 표현하기 때문에 이것을 변환시키기 위해서 UTF-8 포맷으로 변경을 해주는 작업이 필요

위와같이 함수의 선언에서 받을 때는 JString으로 정상적으로 받지만,
실제로 C++에서 사용할 때는 위와 같이 GetStringUTFChars 를 통해 받아와야함
해당 함수는 변수 선언에서도 Char* 형식으로 받는것처럼 문자열에 대한 포인터를 얻을 때 사용함
*해당 함수의 두번 째 인가 isCopy는 복사본을 만들지 여부를 나타냄