1

まず、私はC++/CLIの初心者です。

いくつかの調査を行った後Marshal::PtrToStringBSTR、 を に変換するためにIntPtr使用できることがわかりましたSystem::String。それで、_bstr_t変数をに変換IntPtrして、言及された関数に渡して変換できるようにする方法はありますか?

または、

_bstr_t変数をに変換する正しい方法は何System::Stringですか?

4

3 に答える 3

6

System :: Stringには、wchar_t*を受け取るコンストラクターがあります。これにより、このコードが機能します。

_bstr_t bs(L"Hello world");
String^ ss = gcnew String(bs.GetBSTR(), 0, bs.length());

length()を渡すと、埋め込まれたゼロが適切に処理されます。それを気にしない場合は、gcnew String(bs.GetBSTR());を使用できます。

于 2011-11-17T15:36:14.983 に答える
3

marshal_asを使用して を取得できるはずですSystem::String

marshal_as<System::String^>(value);

さまざまな文字列タイプの MSDN ページは次のとおりです: http://msdn.microsoft.com/en-us/library/bb384865.aspx

最も重要なことは、文字列の種類に応じて正しい #include に注意を払うことです。

于 2011-11-17T15:07:22.520 に答える