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

时间:2013-07-22 14:12:36

标签: 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();
}

由于

1 个答案:

答案 0 :(得分:4)

试试这个:

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;  
}