C ++阿拉伯语UTF8字符串到CString

时间:2015-05-11 15:35:45

标签: c++ string utf-8 mfc c-strings

在Visual Studio 2008 MFC项目中我要管理包含阿拉伯语城市的UTF8中的字符串并在线搜索我写下这段代码:

    CString MyClass::convertString(string input) {
    int l = MultiByteToWideChar(CP_UTF8, 0, input.c_str(), -1, NULL, 0);
    wchar_t *str = new wchar_t[l];
    int r = MultiByteToWideChar(CP_UTF8, 0, input.c_str(), -1, str, l);
    CString output = str;
    delete str ;
    return output;
}

当我尝试转换字符串时,它保持不变,如果我尝试打印这两个字符串,结果是相同的。 我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

感谢所有回复。我找到了解决方案;输入中的字符串未编码为UTF8(我应该在发布到Stackoverflow之前检查它),然后我编辑了将输出从CString更改为wstring的代码。

    wstring MyClass::convertString(string input) {
    int l = MultiByteToWideChar(CP_UTF8, 0, input.c_str(), -1, NULL, 0);
    wchar_t *str = new wchar_t[l];
    int r = MultiByteToWideChar(CP_UTF8, 0, input.c_str(), -1, str, l1);
    wstring output = wstring(str);
    delete str ;
    return output
}

现在一切正常。感谢。