2014-12-31 3 views
11

का रूपांतरण कृपया मेरी मदद करें मैं Win32 कंसोल में wchar_t * var स्ट्रिंग varStr को कैसे परिवर्तित कर सकता हूं।wchar_t * को स्ट्रिंग

// Your wchar_t* 
wchar_t* txt = L"Hello World"; 
wstring ws(txt); 
// your new String 
string str(ws.begin(), ws.end()); 
// Show String 
cout << str << endl; 
+0

http://stackoverflow.com/questions/4339960/how-do-i-convert-wchar-t-to-stdstring –

+0

अपना कोड दिखाएं, कृपया (Win32 API) – grisha

उत्तर

35

उपयोग wstring, इस कोड को देखते हैं। इसमें एक कन्स्ट्रक्टर है जो wchar_t * प्रकार के पैरामीटर को स्वीकार करता है।

यहां इस कक्षा का उपयोग करने का एक पूर्ण उदाहरण है।

wchar_t* characters=L"Test"; 
std::wstring string(characters); 

आप एक निर्माता String.begin() और String.end() युक्त का उपयोग करने की जरूरत नहीं है क्योंकि एसटीडी के निर्माता :: wstring स्वचालित रूप से स्मृति को wchar_t और प्रतियां सरणी के सरणी के भंडारण के लिए आवंटित आवंटित स्मृति।

+0

पूर्ण रूप से गलत कार्य करता है। यह विफल रहता है अगर 'txt' में कोई गैर-असीसी वर्ण होता है। यदि आप '" हैलो वर्ल्ड "को' "..." के साथ बदलते हैं, तो '' '' '' '' '' '' '' हो जाता है। यह * समाधान * डेटा हानि के कारण अत्यधिक हानिकारक है। – Benio

4

आप नाम स्थान एसटीडी से संबंधित wstring वर्ग का उपयोग करना चाहिए: धन्यवाद अग्रिम में

+0

क्या डाउनवॉटर कृपया इसके डाउनवोट को समझा सकता है? –

संबंधित मुद्दे