2012-03-20 11 views
9

시스템 (.net) C++\CLIString^을 MFC C++ LPCTSTR 문자열로 변환하는 방법은 무엇입니까?C++ CLI System.String^~ MFC LPCTSTR

LPCTSTRString^에 입력하는 것은 매우 쉽지만, 다른 방법으로는 아무 것도 발견하지 못했습니다.

+1

LPCTSTR은 char 포인터 일 뿐이므로 문자열을 CString 또는 std :: string으로 변환 한 다음 포인터를 가져와 메모리 관리를 처리하지 않아도됩니다. – stijn

답변

13

위 비주얼 스튜디오 2008 이상을 사용한다면, 지금처럼 C++/CLI 마샬링 라이브러리를 사용하여이 작업을 수행 할 수 있어야한다 :

#include <msclr\marshal.h> 

using namespace System; 
using namespace msclr::interop; 

... 

String^ cliString; 
marshal_context context; 

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

더 많은 정보를 MSDN에 종류의 사이에 마샬링에 : Overview of Marshaling in C++

+0

LPCTSTR tstr = context를 사용하지 않는 이유는 무엇입니까? marshal_as (cliString) 그리고 빌드 환경에서 실제 문자열 유형을 처리하게 하시겠습니까? – TeaWolf

+0

나는 당신의 감각적 인 생각을 포착했습니다. 어떤 이유로 그것이 제 정신을 잃었습니다. 감사! –

+0

다른 사람의 답변에서 마샬과 비교하여이 마샬의 차이점은 무엇입니까? –