2012-07-18 58 views

Trả lời

6
ref new Platform::String(&ch, 1); 
+0

Cảm ơn nhưng điều này không hoạt động, 'gcnew là undefined' – joe

+1

@joe kiểm tra biến thể hiện tại –

1

Sử dụng các nhà xây dựng thích hợp cho công việc:

// this is a pointer to the start of an array of char16 
char16* c; 

// this is the number of chars in the array 
// (not including the null char if the array is null-terminated) 
int n; 

Platform::String^ str(c, n); 

Nếu bạn "mảng của char16s" là null-chấm dứt, bạn cũng có thể sử dụng này:

Platform::String^ str(c); 
+0

sao chép chính xác những gì bạn có vào mã của tôi cho lỗi này C3149: 'vBulletin :: String': không thể sử dụng loại này ở đây mà không có một cấp cao nhất '^' – joe

+0

@ joe Rõ ràng bạn phải thay đổi String thành String ^, nhưng không hỏi tôi tại sao. Tôi sẽ không bao giờ chạm vào phương ngữ CLI, ngay cả với một cực 10 mét. – Gigi

8

Tôi đã tìm thấy phương thức convert char[] đến Platform::String.

char char_str[] = "Char string"; 
std::string s_str = std::string(char_str); 
std::wstring wid_str = std::wstring(s_str.begin(), s_str.end()); 
const wchar_t* w_char = wid_str.c_str(); 
Platform::String^ p_string = ref new Platform::String(w_char); 

Tôi hy vọng có cách hiệu quả hơn phương pháp của tôi.

+0

Chỉ là những gì tôi đang tìm kiếm - cảm ơn rất nhiều. – 3yakuya

+0

Tôi đã tìm kiếm các phương pháp ngắn hơn. Điều này có vẻ là nó. – pollaris

2
String^ StringFromAscIIChars(char* chars) 
{ 
    size_t newsize = strlen(chars) + 1; 
    wchar_t * wcstring = new wchar_t[newsize]; 
    size_t convertedChars = 0; 
    mbstowcs_s(&convertedChars, wcstring, newsize, chars, _TRUNCATE); 
    String^ str=ref new Platform::String(wcstring); 
    delete[] wcstring; 
    return str; 
} 

Cũng xem liên kết này MSDN: http://msdn.microsoft.com/en-us/library/ms235631.aspx

1

Hãy thử một cái gì đó như thế:

#include <cvt/wstring> 
#include <codecvt> 
... 
stdext::cvt::wstring_convert<std::codecvt_utf8<wchar_t>> convert; 
std::wstring wide_string = convert.from_bytes(char_ptr); 
Platform::String^ platform_string = ref new Platform::String(wide_string.c_str()); 
Các vấn đề liên quan