gpt4 book ai didi

c++ - 将 Platform::Array 转换为字符串

转载 作者:太空狗 更新时间:2023-10-29 21:02:50 35 4
gpt4 key购买 nike

A 在库中有一个 C++ 函数,该函数读取资源并返回 Platform::Array<byte>^

如何将其转换为 Platform::Stringstd::string

BasicReaderWriter^ m_basicReaderWriter = ref new BasicReaderWriter()
Platform::Array<byte>^ data = m_basicReaderWriter ("file.txt")

我需要一个 Platform::String来自 data

最佳答案

如果您的 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*>byte * 转换data->begin() 返回的指针到 char *指针(和 data->end() 类似),例如

std::string s( reinterpret_cast<const char*>(data->begin()), data->Length );

关于c++ - 将 Platform::Array<byte> 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14654317/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com