#pragma once #ifdef _WIN32 #include #else #endif #include #include class CLewaimaiString { public: CLewaimaiString(); ~CLewaimaiString(); static bool base64_encode(const string& input, string* output); static bool base64_decode(const string& input, string* output); static void trim(string &s); #ifdef _WIN32 static std::string UnicodeToUTF8(const std::wstring & wstr) { std::string ret; try { std::wstring_convert< std::codecvt_utf8 > wcv; ret = wcv.to_bytes(wstr); } catch (const std::exception & e) { std::cerr << e.what() << std::endl; } return ret; } static std::wstring UTF8ToUnicode(const std::string & str) { std::wstring ret; try { std::wstring_convert< std::codecvt_utf8 > wcv; ret = wcv.from_bytes(str); } catch (const std::exception & e) { std::cerr << e.what() << std::endl; } return ret; } static std::string UnicodeToANSI(const std::wstring & wstr) { std::string ret; std::mbstate_t state = {}; const wchar_t *src = wstr.data(); size_t len = std::wcsrtombs(nullptr, &src, 0, &state); if (static_cast(-1) != len) { std::unique_ptr< char[] > buff(new char[len + 1]); len = std::wcsrtombs(buff.get(), &src, len, &state); if (static_cast(-1) != len) { ret.assign(buff.get(), len); } } return ret; } static std::wstring ANSIToUnicode(const std::string & str) { std::wstring ret; std::mbstate_t state = {}; const char *src = str.data(); size_t len = std::mbsrtowcs(nullptr, &src, 0, &state); if (static_cast(-1) != len) { std::unique_ptr< wchar_t[] > buff(new wchar_t[len + 1]); len = std::mbsrtowcs(buff.get(), &src, len, &state); if (static_cast(-1) != len) { ret.assign(buff.get(), len); } } return ret; } static std::string UTF8ToANSI(const std::string & str) { return UnicodeToANSI(UTF8ToUnicode(str)); } static std::string ANSIToUTF8(const std::string & str) { return UnicodeToUTF8(ANSIToUnicode(str)); } #else #endif static std::string DoubleToString(const double value, unsigned int precisionAfterPoint) { char str[256]; std::string pre = "%." + to_string(precisionAfterPoint) + "f"; sprintf(str, pre.c_str(), value); string result = str; return result; } };