在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;
}
当我尝试转换字符串时,它保持不变,如果我尝试打印这两个字符串,结果是相同的。 我做错了什么?
提前致谢。
答案 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
}
现在一切正常。感谢。