本来想着有没有直接将UTF-8编码转换成string的函数,查找了半天,然而并没有,无奈只好自己封装了一个,使用了C++11,代码如下:
std::string MyString::UnicodeToAscii(const std::wstring str)
{
int iTextLen = WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, NULL, 0, NULL, NULL);
std::vector<char> vecText(iTextLen, '\0');
::WideCharToMultiByte(CP_ACP, 0, str.c_str(), -1, &(vecText[0]), iTextLen, NULL, NULL);
std::string strText = &(vecText[0]);
return strText;
}
std::string MyString::UTF8ToString(const std::string & utf8Data)
{
//先将UTF-8转换成Unicode
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
std::wstring wString = conv.from_bytes(utf8Data);
//在转换成string
return UnicodeToAscii(wString);
}
这样就大功告成了!