システム(.net)C++\CLI
String^
をMFC C++ LPCTSTR
文字列に変換するにはどうすればよいですか?C++ CLI System.String^to MFC LPCTSTR
LPCTSTR
をString^
に入力するのは非常に簡単ですが、これまでとは逆の方法では何も見つかりませんでした。
システム(.net)C++\CLI
String^
をMFC C++ LPCTSTR
文字列に変換するにはどうすればよいですか?C++ CLI System.String^to MFC LPCTSTR
LPCTSTR
をString^
に入力するのは非常に簡単ですが、これまでとは逆の方法では何も見つかりませんでした。
あなたは、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);
なぜLPCTSTR tstr = contextを使用してみませんか? marshal_as
私はあなたの賢明なアイデアを思いついた。何らかの理由でそれが私の心を崩してしまった。ありがとう! –
このマーシャリングとマーシャリングとの違いは、他の回答ではどうなりますか? –
Marshal::StringToHGlobalUni,Marshal::StringToHGlobalAutoまたはMarshal::StringToHGlobalAnsiを試してみるとよいでしょう。
割り当てられたアンマネージ文字列は、Marshal::FreeHGlobalで解放する必要があることに注意してください。
LPCTSTRは単なるcharポインタなので、StringをCStringまたはstd :: stringに変換してからポインタを取得して、メモリ管理を扱う必要がないようにしてください。 – stijn