Не самый элегантный, но единственное решение, которое работало для меня, чтобы получить константный символ * от платформы :: String
const char * StringToChar(String^ s) {
const wchar_t *W = s->Data();
int Size = wcslen(W);
char *CString = new char[Size + 1];
CString[Size] = 0;
for (int y = 0;y<Size; y++)
{
CString[y] = (char)W[y];
}
return (const char *)CString;
}
и его намного проще, чтобы преобразовать его обратно
String^ CharToString(const char * char_array) {
std::string s_str = std::string(char_array);
std::wstring wid_str = std::wstring(s_str.begin(), s_str.end());
const wchar_t* w_char = wid_str.c_str();
return ref new String(w_char);
}
Код для преобразования из char * в String не работает: в нем говорится: «Невозможно использовать новый класс C++/CX (необходимо использовать ref new). Поэтому я изменил это на 'char * text =" new string "; \t \t Платформа :: String^str = ref new Платформа :: String (текст, strlen (текст)) ;, но затем он говорит, что этот конструктор не существует. – user1945293
Попробуйте следующее: https://msdn.microsoft.com/library/hh699879.aspx –