Cogs.Core
Unicode.cpp
1#include "Unicode.h"
2
3#ifdef _WIN32
4
5#include <Windows.h>
6
7std::string Cogs::narrow(std::wstring_view str)
8{
9 if (str.empty()) {
10 return std::string();
11 }
12
13 int length = static_cast<int>(str.size());
14 int size = WideCharToMultiByte(CP_UTF8, 0, str.data(), length, nullptr, 0, nullptr, nullptr);
15 std::string ret(size, 0);
16
17 WideCharToMultiByte(CP_UTF8, 0, str.data(), length, ret.data(), size, nullptr, nullptr);
18 return ret;
19}
20
21std::wstring Cogs::widen(const std::string_view str)
22{
23 if (str.empty()) {
24 return std::wstring();
25 }
26
27 int length = static_cast<int>(str.size());
28 int size = MultiByteToWideChar(CP_UTF8, 0, str.data(), length, nullptr, 0);
29 std::wstring ret(size, 0);
30
31 MultiByteToWideChar(CP_UTF8, 0, str.data(), length, ret.data(), size);
32 return ret;
33}
34
35#endif