37#ifndef CONVERSION_UTILS_HPP
38#define CONVERSION_UTILS_HPP
47#if defined(_WIN64) || defined(WIN64) || defined(WIN32) || defined(_WIN32)
63 if (src.empty())
return {};
66 WideCharToMultiByte(CP_ACP, 0, src.c_str(),
static_cast<int>(src.length()),
nullptr, 0,
nullptr,
nullptr);
70 std::vector<char> destBuffer(
static_cast<size_t>(destSize) + 1);
71 destSize = WideCharToMultiByte(CP_ACP,
74 static_cast<int>(src.length()),
76 static_cast<DWORD
>(destSize),
79 return {destBuffer.data(),
static_cast<size_t>(destSize)};
91 if (src.empty())
return {};
94 WideCharToMultiByte(CP_UTF8, 0, src.c_str(),
static_cast<int>(src.length()),
nullptr, 0,
nullptr,
nullptr);
98 std::vector<char> destBuffer(
static_cast<size_t>(destSize) + 1);
99 destSize = WideCharToMultiByte(CP_UTF8,
102 static_cast<int>(src.length()),
104 static_cast<DWORD
>(destSize),
107 return {destBuffer.data(),
static_cast<size_t>(destSize)};
119 if (src.empty())
return {};
121 if (
auto destSize = MultiByteToWideChar(CP_UTF8, 0, src.c_str(),
static_cast<int>(src.length()),
nullptr, 0);
124 std::vector<wchar_t> destBuffer(
static_cast<size_t>(destSize) + 1);
125 destSize = MultiByteToWideChar(
126 CP_UTF8, 0, src.c_str(),
static_cast<int>(src.length()), destBuffer.data(),
static_cast<DWORD
>(destSize));
127 return {destBuffer.data(),
static_cast<size_t>(destSize)};
140 if (src.empty())
return {};
142 if (
auto destSize = MultiByteToWideChar(CP_ACP, 0, src.c_str(),
static_cast<int>(src.length()),
nullptr, 0);
145 std::vector<wchar_t> destBuffer(
static_cast<size_t>(destSize) + 1);
146 destSize = MultiByteToWideChar(
147 CP_ACP, 0, src.c_str(),
static_cast<int>(src.length()), destBuffer.data(),
static_cast<DWORD
>(destSize));
148 return {destBuffer.data(),
static_cast<size_t>(destSize)};
Conversion Functions for ascii to wide, utf8 to wide and vice-versa.
static std::wstring wideFromAscii(const std::string &src)
Given an ascii encoded string returns a utf-16 in std::wstring.
static std::wstring wideFromUtf8(const std::string &src)
Given a utf-8 encoded string returns a utf-16 in std::wstring.
static std::string utf8FromWide(const std::wstring &src)
Convert given wide string to utf8 encoded string.
static std::string asciiFromWide(const std::wstring &src)
Convert given wide string to ascii encoded string.