2012-03-20 8 views
9

मैं एक एमएफसी सी ++ LPCTSTR स्ट्रिंग में एक सिस्टम (.net) C++\CLIString^ कैसे परिवर्तित करूं?सी ++ सीएलआई सिस्टम। स्ट्रिंग^एमएफसी एलपीसीटीस्ट्रेट

LPCTSTRString^ में प्राप्त करना बहुत आसान है, लेकिन अब तक इसे अन्य तरीकों से करने के लिए कुछ भी नहीं मिला है।

+1

ध्यान दें कि LPCTSTR केवल एक चार सूचक है, इसलिए हो सकता है कि आप स्ट्रिंग को CString या std :: स्ट्रिंग में कनवर्ट करें और फिर पॉइंटर प्राप्त करें ताकि आपको मेमोरी मैनेजमेंट – stijn

उत्तर

13

आप ऊपर विजुअल स्टूडियो 2008 या है, तो आप यह इतना की तरह C++/CLI प्रमुखता लाइब्रेरी का उपयोग करने के लिए, सक्षम होना चाहिए: Overview of Marshaling in C++

: MSDN पर प्रकार के बीच प्रमुखता पर

#include <msclr\marshal.h> 

using namespace System; 
using namespace msclr::interop; 

... 

String^ cliString; 
marshal_context context; 

LPCTSTR cstr = context.marshal_as<const TCHAR*>(cliString); 

अधिक जानकारी

+0

से निपटने की आवश्यकता न हो, LPCTSTR tstr = संदर्भ का उपयोग क्यों न करें। marshal_as (cliString) और निर्माण वातावरण को वास्तविक स्ट्रिंग प्रकार का ख्याल रखना चाहिए? – TeaWolf

+0

मैंने आपको अपने समझदार विचार पर ले लिया है, जिसके कारण किसी कारण से मेरा दिमाग फिसल गया था। धन्यवाद! –

+0

दूसरे जवाब में मार्शल की तुलना में इस मार्शल के बीच क्या अंतर है? –

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