конвертировать строку ^ в стандартную строку C ++ - PullRequest
0 голосов
/ 21 декабря 2011

Я столкнулся с проблемой cannot convert parameter from 'System::String ^' to 'std::string'. Как я могу преобразовать System :: String ^ в стандартную строку C ++ в среде Visual C ++?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

С эта ссылка в 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;
}
0 голосов
/ 14 марта 2019
 //*** 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^ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...