我正在开发一个使用 C++ 的应用程序。我正在尝试访问此表达式的内容:
((std::string*) pPin->GetUserData())->c_str();
问题是我试图通过 JNI 将这个值传递给 Java,但在 Java 中,它获得了一个新值,与它的原始值无关,我通常可以通过使用这个看到: EXAMPLE_LOG("User Data='%s'", ((std::string*) pPin->GetUserData())->c_str());
我想知道如何获取相同的日志值并将其发送到 Java。
感谢您的帮助。
最佳答案
要从现有的 char * 或 std::string 为 java(jstring) 创建一个字符串,您可以使用 NewStringUTF
JNIEnv * env;
jclass loadedJavaClass;
jmethodID loadedJavaMethod;
//assume JVM, class, and method are already loaded at this point.
//Get c string from std::string object pointer
const char * c_string = ((std::string*) pPin->GetUserData())->c_str();
//Create jstring from string
jstring stuff = env->NewStringUTF( c_string );
//pass jstring to Java function
env->CallStaticVoidMethod( loadedJavaClass, loadedJavaMethod, stuff );
//remove local reference to jstring
JavaEnvironment::getEnvironment()->DeleteLocalRef(stuff);
关于java - 如何访问 c.str() 内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21051913/