improve wstr conversion

This commit is contained in:
2019-09-23 09:07:44 +02:00
parent d91f730cbd
commit 884ebca453

View File

@@ -571,31 +571,33 @@ std::string unescape(const std::string& s)
std::wstring str2wstr(const std::string& str) std::wstring str2wstr(const std::string& str)
{ {
//mbstate_t st = {}; if (str.empty()) return {};
//std::wstring converted; try
//converted.resize(str.size()); {
//const char* ptr = str.c_str();
//std::mbsrtowcs((wchar_t*)converted.data(), &ptr, converted.capacity(), &st);
//return converted;
if (str.empty())
return {};
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converterX; std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converterX;
return converterX.from_bytes(str); return converterX.from_bytes(str);
} }
catch (...)
{
LOG("str2wstr error: %s", str.c_str());
return {};
}
}
std::string wstr2str(const std::wstring & wstr) std::string wstr2str(const std::wstring & wstr)
{ {
//mbstate_t st = {}; if (wstr.empty()) return {};
//std::string converted; try
//converted.resize(wstr.size()); {
//const wchar_t * wptr = wstr.c_str();
//std::wcsrtombs((char*)converted.data(), &wptr, converted.capacity(), &st);
//return converted;
if (wstr.empty())
return {};
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converterX; std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converterX;
return converterX.to_bytes(wstr); return converterX.to_bytes(wstr);
} }
catch (...)
{
LOGW(L"wstr2str error: %s", wstr.c_str());
return {};
}
}
bool str_iequals(const std::string& a, const std::string& b) bool str_iequals(const std::string& a, const std::string& b)
{ {