시스템 (.net) C++\CLI
String^
을 MFC C++ LPCTSTR
문자열로 변환하는 방법은 무엇입니까?C++ CLI System.String^~ MFC LPCTSTR
LPCTSTR
을 String^
에 입력하는 것은 매우 쉽지만, 다른 방법으로는 아무 것도 발견하지 못했습니다.
시스템 (.net) C++\CLI
String^
을 MFC C++ LPCTSTR
문자열로 변환하는 방법은 무엇입니까?C++ CLI System.String^~ MFC LPCTSTR
LPCTSTR
을 String^
에 입력하는 것은 매우 쉽지만, 다른 방법으로는 아무 것도 발견하지 못했습니다.
위 비주얼 스튜디오 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++
을LPCTSTR tstr = context를 사용하지 않는 이유는 무엇입니까? marshal_as
나는 당신의 감각적 인 생각을 포착했습니다. 어떤 이유로 그것이 제 정신을 잃었습니다. 감사! –
다른 사람의 답변에서 마샬과 비교하여이 마샬의 차이점은 무엇입니까? –
Marshal::StringToHGlobalUni, Marshal::StringToHGlobalAuto 또는 Marshal::StringToHGlobalAnsi을 시도해 볼 수 있습니다.
할당 된 관리되지 않는 문자열은 Marshal::FreeHGlobal으로 해제해야합니다.
LPCTSTR은 char 포인터 일 뿐이므로 문자열을 CString 또는 std :: string으로 변환 한 다음 포인터를 가져와 메모리 관리를 처리하지 않아도됩니다. – stijn