如果您的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