From 884ebca45308d50e6bd829c20d0e6e86419fe794 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Mon, 23 Sep 2019 09:07:44 +0200 Subject: [PATCH] improve wstr conversion --- src/util.cpp | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index b461cae..50c64fa 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -571,30 +571,32 @@ std::string unescape(const std::string& s) std::wstring str2wstr(const std::string& str) { - //mbstate_t st = {}; - //std::wstring converted; - //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()) + if (str.empty()) return {}; + try + { + std::wstring_convert, wchar_t> converterX; + return converterX.from_bytes(str); + } + catch (...) + { + LOG("str2wstr error: %s", str.c_str()); return {}; - std::wstring_convert, wchar_t> converterX; - return converterX.from_bytes(str); + } } std::string wstr2str(const std::wstring & wstr) { - //mbstate_t st = {}; - //std::string converted; - //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()) + if (wstr.empty()) return {}; + try + { + std::wstring_convert, wchar_t> converterX; + return converterX.to_bytes(wstr); + } + catch (...) + { + LOGW(L"wstr2str error: %s", wstr.c_str()); return {}; - std::wstring_convert, wchar_t> converterX; - return converterX.to_bytes(wstr); + } } bool str_iequals(const std::string& a, const std::string& b)