まず、私は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 に注意を払うことです。