2011-08-08 4 views
7

में रूपांतरण मैं basic_string<wchar_t> प्रकार का उपयोग कर रहा हूं और इसे जेएनआई परत से गुजरने के लिए इसे एक जेस्ट्रिंग में परिवर्तित करने की आवश्यकता है। मैं सोच रहा हूं कि ऐसा करने का सबसे अच्छा तरीका क्या है। मेरे पास एक ऐसा फ़ंक्शन है जो मुझे basic_string<wchar_t> प्रकार से std::string दे सकता है, इसलिए इसका उत्तर भी अच्छा होगा।basic_string से jstring

चीयर्स।

+2

ध्यान दें कि 'std :: ' 'basic_string को typedef'ed है std :: wstring'। –

+1

संभावित डुप्लिकेट [मैं jstring को wchar_t * में कैसे परिवर्तित करूं *] (http://stackoverflow.com/questions/68042/how-do-i-convert-jstring-to-wchar-t) –

+0

मैं रिवर्स करने की कोशिश कर रहा हूं उसमें से, और यह देखने की कोशिश कर रहा हूं कि क्या मैं वहां पर कहीं भी char * का उपयोग करने से बच सकता हूं। – sparkFinder

उत्तर

5

आपको std :: basic_string को यूटीएफ -8 में परिवर्तित करने की आवश्यकता होगी। देखें कि आपका wstring -> स्ट्रिंग रूपांतरण क्या करता है।

सूर्य में एक जेएनआई ट्यूटोरियल है जो दिखाता है कि char * को jstring में कैसे परिवर्तित करें (कुछ यूटीएफ रूपांतरण दिनचर्या का उपयोग करके)। आप अपने wstring-> स्ट्रिंग इस्तेमाल कर सकते हैं, तो() NewStringUTF कार्य करने के लिए string.c_str में पारित:

Untested कोड:

JNIEXPORT jstring JNICALL StringTest(JNIEnv *env) { 
    const char* test = "something"; 
    return (*env)->NewStringUTF(env, test); 
} 
+0

लिंक संभवतः डुप्लिकेट –

+0

जो कि ** कॉन्स char की अपेक्षा करता है ***। अगर मुझे ** std :: string ** से कनवर्ट करने की आवश्यकता है तो क्या होगा? –

+2

@ इगोर std :: string सदस्य .c_str() का उपयोग करें। –