2012-03-20 34 views
9

システム(.net)C++\CLIString^をMFC C++ LPCTSTR文字列に変換するにはどうすればよいですか?C++ CLI System.String^to MFC LPCTSTR

LPCTSTRString^に入力するのは非常に簡単ですが、これまでとは逆の方法では何も見つかりませんでした。

+1

LPCTSTRは単なるcharポインタなので、StringをCStringまたはstd :: stringに変換してからポインタを取得して、メモリ管理を扱う必要がないようにしてください。 – stijn

答えて

13

あなたは、Visual Studio 2008または上記を持っている場合は、あなたがそうのように、C++/CLIマーシャリングライブラリを使用してこれを行うことができるようになります。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); 

詳細情報:Overview of Marshaling in C++

+0

なぜLPCTSTR tstr = contextを使用してみませんか? marshal_as (cliString)とビルド環境で実際の文字列型を処理させますか? – TeaWolf

+0

私はあなたの賢明なアイデアを思いついた。何らかの理由でそれが私の心を崩してしまった。ありがとう! –

+0

このマーシャリングとマーシャリングとの違いは、他の回答ではどうなりますか? –