2015-12-04 2 views

ответ

0
//Char to String 
char *text = "new string"; 
Platform::String str = new Platform::String(text, strlen(text)); 

//String to char 
char16 *newText = str.Data(); 

Более подробный ответ: https://stackoverflow.com/a/11746252/5477130

+0

Код для преобразования из char * в String не работает: в нем говорится: «Невозможно использовать новый класс C++/CX (необходимо использовать ref new). Поэтому я изменил это на 'char * text =" new string "; \t \t Платформа :: String^str = ref new Платформа :: String (текст, strlen (текст)) ;, но затем он говорит, что этот конструктор не существует. – user1945293

+0

Попробуйте следующее: https://msdn.microsoft.com/library/hh699879.aspx –

0

Не самый элегантный, но единственное решение, которое работало для меня, чтобы получить константный символ * от платформы :: 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); 
} 
Смежные вопросы