まず、私はC++/CLIの初心者です。
いくつかの調査を行った後Marshal::PtrToStringBSTR
、 を に変換するためにIntPtr
使用できることがわかりましたSystem::String
。それで、_bstr_t
変数をに変換IntPtr
して、言及された関数に渡して変換できるようにする方法はありますか?
または、
_bstr_t
変数をに変換する正しい方法は何System::String
ですか?
まず、私はC++/CLIの初心者です。
いくつかの調査を行った後Marshal::PtrToStringBSTR
、 を に変換するためにIntPtr
使用できることがわかりましたSystem::String
。それで、_bstr_t
変数をに変換IntPtr
して、言及された関数に渡して変換できるようにする方法はありますか?
または、
_bstr_t
変数をに変換する正しい方法は何System::String
ですか?
System :: Stringには、wchar_t*を受け取るコンストラクターがあります。これにより、このコードが機能します。
_bstr_t bs(L"Hello world");
String^ ss = gcnew String(bs.GetBSTR(), 0, bs.length());
length()を渡すと、埋め込まれたゼロが適切に処理されます。それを気にしない場合は、gcnew String(bs.GetBSTR());を使用できます。
marshal_as
を使用して を取得できるはずですSystem::String
。
marshal_as<System::String^>(value);
さまざまな文字列タイプの MSDN ページは次のとおりです: http://msdn.microsoft.com/en-us/library/bb384865.aspx
最も重要なことは、文字列の種類に応じて正しい #include に注意を払うことです。