9

你如何从 char 转换为 a Platform::String^

的文档在Platform::String这里,但没有提到如何转换为不同的数据类型。

http://msdn.microsoft.com/en-us/library/windows/apps/hh755812(v=vs.110).aspx

4

5 回答 5

12

我找到了一种转换char[]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);

我希望有比我的方法更有效的方法。

于 2012-12-03T01:10:59.067 回答
6
ref new Platform::String(&ch, 1);
于 2012-07-18T16:33:33.207 回答
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;
}

另请参阅此 MSDN 链接:http: //msdn.microsoft.com/en-us/library/ms235631.aspx

于 2013-12-20T16:02:55.117 回答
1

为作业使用适当的构造函数:

// 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);

如果您的“char16s 数组”以 null 结尾,您也可以使用它:

Platform::String^ str(c);
于 2012-07-18T16:32:41.033 回答
0

尝试这样的事情:

#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());
于 2016-07-13T12:18:56.960 回答