如何将_bstr_t转换为System :: String

Rag*_*ath 1 c++-cli string-conversion

首先,我是C++/CLI的新手.

做了一些研究后,我发现我可以Marshal::PtrToStringBSTR用来转换IntPtrSystem::String.那么,有没有办法将我的_bstr_t变量转换为一个,IntPtr以便我可以将它传递给提到的函数并进行转换?

要么,

_bstr_t变量转换为的正确方法是System::String什么?

Han*_*ant 6

System :: String有一个带wchar_t*的构造函数.这使得此代码有效:

_bstr_t bs(L"Hello world");
String^ ss = gcnew String(bs.GetBSTR(), 0, bs.length());
Run Code Online (Sandbox Code Playgroud)

传递length()可确保正确处理嵌入的零.如果你不关心那么你可以简单地使用gcnew String(bs.GetBSTR());