From 7351020a582d70a1495249fba87d342c8a1fb634 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 10 Apr 2019 19:42:46 +0800 Subject: Refactor. --- src/win/string_util.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/win/string_util.cpp (limited to 'src/win/string_util.cpp') diff --git a/src/win/string_util.cpp b/src/win/string_util.cpp new file mode 100644 index 00000000..dd513b12 --- /dev/null +++ b/src/win/string_util.cpp @@ -0,0 +1,20 @@ +#include "cru/platform/string_util.hpp" + +#include "cru/win/exception.hpp" + +namespace cru::platform { +std::string ToUtf8String(const std::wstring_view& string) { + if (string.empty()) return std::string(); + + const auto length = ::WideCharToMultiByte(CP_UTF8, 0, string.data(), -1, + nullptr, 0, nullptr, nullptr); + std::string result; + result.resize(length); + if (::WideCharToMultiByte(CP_UTF8, 0, string.data(), -1, result.data(), + static_cast(result.size()), nullptr, + nullptr) == 0) + throw win::Win32Error(::GetLastError(), + "Failed to convert wide string to UTF-8."); + return result; +} +} // namespace cru::platform -- cgit v1.2.3