是否可以直接在 C++ NDK 中可靠地修改 java 字符串(无需复制)?
Is it possible to reliably modify a java string inside the C++ NDK directly (without making a copy)?
我看到的唯一方法是按照 here 所述获取参考来执行 jstring
,然后是 GetStringCritical
,并将其用作 u16string
(所以作用于它的任何其他字符串也应该是 u16string
)。
但我不确定这是否有效,因为似乎不确定 GetStringCritical
是否会 return 指向原始文件的指针(它可能会创建一个副本)。
我找到的关于这个的帖子比较老,我想知道是否有更好的方法来做到这一点,或者现在所有现代平台在使用 GetStringCritical
时都不会创建副本?
Java 中的字符串在设计上是不可变的。他们不能改变,如果可能的话,通过 C 找到一些 hack 来这样做可能会破坏事情。
我看到的唯一方法是按照 here 所述获取参考来执行 jstring
,然后是 GetStringCritical
,并将其用作 u16string
(所以作用于它的任何其他字符串也应该是 u16string
)。
但我不确定这是否有效,因为似乎不确定 GetStringCritical
是否会 return 指向原始文件的指针(它可能会创建一个副本)。
我找到的关于这个的帖子比较老,我想知道是否有更好的方法来做到这一点,或者现在所有现代平台在使用 GetStringCritical
时都不会创建副本?
Java 中的字符串在设计上是不可变的。他们不能改变,如果可能的话,通过 C 找到一些 hack 来这样做可能会破坏事情。