将String ^转换为标准C ++字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将String ^转换为标准C ++字符串相关的知识,希望对你有一定的参考价值。

我遇到了问题cannot convert parameter from 'System::String ^' to 'std::string'。如何在Visual C ++环境中将System :: String ^转换为标准C ++字符串?

答案

来自this link at Microsoft

void MarshalString ( String ^ s, string& os ) {
    using namespace Runtime::InteropServices;
    const char* chars = 
       (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
    os = chars;
    Marshal::FreeHGlobal(IntPtr((void*)chars));
}

int main() {
    string a = "test";
    String ^ c = gcnew String("abcd");
    cout << a << endl;
    MarshalString(c, a);
    cout << a << endl;
}
另一答案
 //*** convert String^ to standard C++ string

 ` String ^SyStr = "abc"; // system string
   string StStr ="";      // standard string
   for each (char c in SyStr )
   {
       StStr .push_back( c);
   } `

   //**** End convert String^ to standard C++ string 

   //****  convert standard C++ string to  String^ 

  ` String ^SyStr = "";  // system string
    string StStr ="xyz"; // standard string
    SyStr = gcnew String(StStr.c_str());`

    //**** End  convert standard C++ string to  String^ 

以上是关于将String ^转换为标准C ++字符串的主要内容,如果未能解决你的问题,请参考以下文章

将 System::String^ (C# 字符串)转换为 C++ std::string [重复]

mfc中,如何将CString 转换成 string

如何将string类型的数字转换成int

标准C语言中如何将字符串中的内容转换为字符数组?

C#环境如何将一个字符串转换为代码执行?

C++ 使用最少的代码将字符串转换为 wstring 并返回