如果您的Platform::Array<byte>^ data
包含一个ASCII字符串(如您在您的问题的评论澄清),您可以将其转换为std::string
个使用适当std::string
构造函数重载(注意:Platform::Array
提供STL样begin()
和end()
方法):
// Using std::string's range constructor
std::string s(data->begin(), data->end());
// Using std::string's buffer pointer + length constructor
std::string s(data->begin(), data->Length);
不像std::string
,Platform::String
包含的Unicode UTF-16(wchar_t
)字符串,所以你需要从一个转换你的包含ANSI字符串到Unicode字符串的原始字节数组。您可以使用ATL conversion helper类CA2W
(其中包含对Win32 API MultiByteToWideChar()
的调用)进行此转换。 然后你可以使用Platform::String
构造以原始UTF-16字符指针:
Platform::String^ str = ref new String(CA2W(data->begin()));
注: 我目前还没有VS2012用,所以我还没有与C++/CX测试此代码编译器。如果你得到一些参数匹配的错误,你可能要考虑reinterpret_cast<const char*>
从由data->begin()
返回到char *
指针byte *
指针(和data->end()
类似),例如转换
std::string s(reinterpret_cast<const char*>(data->begin()), data->Length);
对于'std :: string',至少我会想象它与迭代器对构造函数兼容。 – chris
该文件的编码是什么? – svick
这就是简单的ascii – ppaulojr