gpt4 book ai didi

java - 如何访问 c.str() 内容?

转载 作者:行者123 更新时间:2023-11-30 04:09:42 24 4
gpt4 key购买 nike

我正在开发一个使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com