在 C++/CLI 中将托管 System::String 转换为 std::string

use*_*422 0 c++ c++-cli

我在 C++/CLI 中将托管 System::String 转换为 std::string 时遇到问题。这段代码不起作用,我不明白为什么:

string SolvingUnitWrapper::getName(String ^name)
{
    pin_ptr<const wchar_t> wstr = PtrToStringChars(name);
    ostringstream oss;
    oss << wstr; 
    return oss.str();
}
Run Code Online (Sandbox Code Playgroud)

谢谢

mak*_*akc 5

尝试这个:

std::string managedStrToNative(System::String^ sysstr)
{
  using System::IntPtr;
  using System::Runtime::InteropServices::Marshal;

  IntPtr ip = Marshal::StringToHGlobalAnsi(sysstr);
  std::string outString = static_cast<const char*>(ip.ToPointer());
  Marshal::FreeHGlobal(ip);
  return outString;  
}
Run Code Online (Sandbox Code Playgroud)