2011-11-08 14 views
5

अतिरिक्त जानकारी में LPCWSTR को im जो WinHttpOpenRequest एपीआई जो दृश्य स्टूडियो 2008कैसे LPCSTR से कन्वर्ट करने के लिए C++

+0

आप अपने ऐप में विस्तृत चार स्ट्रिंग का उपयोग क्यों नहीं कर रहे हैं? – tenfour

+0

संभावित डुप्लिकेट [एलपीसीडब्लूस्ट्रेट के लिए क्या खड़ा है और इसे कैसे संभाला जाना चाहिए?] (Http://stackoverflow.com/questions/2230758/what-does-lpcwstr-stand-for-and-how-should-it- साथ-साथ संभाला गया) –

उत्तर

11

:

#include <Windows.h> 
#include <atlbase.h> 
#include <iostream> 

int main(int argc, char *argv[]) { 
    USES_CONVERSION; 
    LPCSTR a = "hello"; 
    LPCWSTR w = A2W(a); 
    std::wcout << w << std::endl; 
    return 0; 
} 

किसी भी स्मृति (वाइड के लिए एएनएसआई) A2W द्वारा आवंटित मुक्त हो जाएगा जब समारोह बाहर निकलता है।

+2

उन एटीएल 3.0 मैक्रोज़ को संस्करण 7.0 [एटीएल और एमएफसी स्ट्रिंग रूपांतरण मैक्रोज़] (http://msdn.microsoft.com/en-us/library/87zae4a3.aspx) द्वारा एक दशक से अधिक समय से हटा दिया गया है पहले। दूसरों के बीच, एटीएल 7.0 मैक्रोज़ को अब 'USES_CONVERSION' मैक्रो के उपयोग की आवश्यकता नहीं है। इसके अलावा, आप कॉन्स-सही प्रकारों का उपयोग कर सकते हैं, उदा। आपके उदाहरण में: 'सीए 2 डब्ल्यू (ए)'। – IInspectable

4

Converting from char * का उपयोग कर ऑब्जेक्ट नाम और im के लिए LPCWSTR की आवश्यकता का उपयोग एक आवेदन के निर्माण के लिए एक अच्छा नमूना है

char *orig = "Hello, World!"; 
cout << orig << " (char *)" << endl; 

// Convert to a wchar_t* 
size_t origsize = strlen(orig) + 1; 
const size_t newsize = 100; 
size_t convertedChars = 0; 
wchar_t wcstring[newsize]; 
mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE); 
wcscat_s(wcstring, L" (wchar_t *)"); 
wcout << wcstring << endl; 

लेकिन दस गुना उल्लेख किया गया। का प्रयोग करें सबसे सरल तरीका ATL उपयोग करने के लिए है generic text mapping यदि संभव हो तो

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