std::wstring stringToWstring(std::string aString) { int size_needed = MultiByteToWideChar(CP_UTF8, 0, &aString[0], (int)aString.size(), NULL, 0); std::wstring wstrTo(size_needed, 0); MultiByteToWideChar(CP_UTF8, 0, &aString[0], (int)aString.size(), &wstrTo[0], size_needed); return wstrTo; }
std::wstring s2ws(const std::string& str) { int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0); std::wstring wstrTo(size_needed, 0); MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed); return wstrTo; }
// Convert an ANSI string to a wide Unicode String std::wstring ansi2unicode(const std::string &str) { int size_needed = MultiByteToWideChar(CP_ACP, 0, &str[0], (int)str.size(), NULL, 0); std::wstring wstrTo(size_needed, 0); MultiByteToWideChar(CP_ACP, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed); return wstrTo; }
//! Converts an UTF8 string to a wide Unicode String std::wstring CSystemUtilsWindows::UTF8_Decode(const std::string& str) { int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], static_cast<int>(str.size()), NULL, 0); std::wstring wstrTo(size_needed, 0); MultiByteToWideChar(CP_UTF8, 0, &str[0], static_cast<int>(str.size()), &wstrTo[0], size_needed); return wstrTo; }
// Convert an UTF8 string to a wide Unicode String static std::wstring utf8_decode(const std::string &str, size_t size_needed) { if (size_needed == 0) size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int) str.size(), NULL, 0); std::wstring wstrTo(size_needed, 0); MultiByteToWideChar(CP_UTF8, 0, &str[0], (int) str.size(), &wstrTo[0], size_needed); return wstrTo; }
std::wstring toUnicode(const std::string &str, UINT codePage) { if( str.empty() ) return std::wstring(); int size_needed = MultiByteToWideChar(codePage, 0, &str[0], (int)str.size(), NULL, 0); std::wstring wstrTo( size_needed, 0 ); MultiByteToWideChar (codePage, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed); return wstrTo; }
// Convert an UTF8 string to a wide Unicode String // https://stackoverflow.com/a/3999597 std::wstring utf8_decode(const std::string &str) { if (str.empty()) { return std::wstring(); } int size_needed = ::MultiByteToWideChar(CP_UTF8, 0, &str[0], (int) str.size(), NULL, 0); std::wstring wstrTo(size_needed, 0); ::MultiByteToWideChar(CP_UTF8, 0, &str[0], (int) str.size(), &wstrTo[0], size_needed); return wstrTo; }