我正在为基于锌的闪存应用程序进行本机扩展,我需要将 const char*
转换为 wstring
。
这是我的代码:
mdmVariant_t* appendHexDataToFile(const zinc4CallInfo_t *pCallInfo, int paramCount, mdmVariant_t **params) {
if(paramCount >= 2) {
const char *file = mdmVariantGetString(params[0]);
const char *data = mdmVariantGetString(params[1]);
return mdmVariantNewInt(native.AppendHexDataToFile(file, data));
}
else {
return mdmVariantNewBoolean(FALSE);
}
}
但是 native.AppendHexDataToFile()
需要两个 wstring
。我对 C++ 不是很好,我认为所有这些不同的字符串类型完全令人困惑,而且我在网络中没有找到有用的东西。所以我问你们怎么做。
编辑:字符串是 UTF-8,我使用的是 OSX 和 Windows XP/Vista/7
原文由 Johannes Klauß 发布,翻译遵循 CC BY-SA 4.0 许可协议
我建议您尽可能使用
std::string
而不是 C 风格的字符串(char*
)。您可以从const char*
创建std::string
对象,只需将其传递给其构造函数即可。拥有
std::string
后,您可以创建简单的函数,将包含多字节 UTF-8 字符的 — 转换为std::string
std::wstring
包含 UTF-166 编码点来自std::string
的特殊字符的表示。还有更多方法可以做到这一点,这里是使用 MultiByteToWideChar 函数 的方法:
还要检查这些问题:
将多字节字符映射到它们的 unicode 点表示
为什么使用 MultiByteToWideCharArray 将 std::string 转换为 std::wstring?