diff options
| author | crupest <crupest@outlook.com> | 2019-04-01 16:08:12 +0800 |
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2019-04-01 16:08:12 +0800 |
| commit | 055a3cde0cd19c896f3e498b774078654555c065 (patch) | |
| tree | badbd1350daea36b87e98ada60f55ef5a2168bc9 /src/platform_win | |
| parent | 0a429ee13c9fb9a9da6df62b1ebae101180278f5 (diff) | |
| download | cru-055a3cde0cd19c896f3e498b774078654555c065.tar.gz cru-055a3cde0cd19c896f3e498b774078654555c065.tar.bz2 cru-055a3cde0cd19c896f3e498b774078654555c065.zip | |
...
Diffstat (limited to 'src/platform_win')
| -rw-r--r-- | src/platform_win/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/platform_win/string_util.cpp | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/platform_win/CMakeLists.txt b/src/platform_win/CMakeLists.txt index c8a5840e..8edf646e 100644 --- a/src/platform_win/CMakeLists.txt +++ b/src/platform_win/CMakeLists.txt @@ -3,6 +3,7 @@ add_library(cru_platform_win STATIC exception.cpp god_window.cpp graph_manager.cpp + string_util.cpp timer.cpp win_application.cpp win_brush.cpp diff --git a/src/platform_win/string_util.cpp b/src/platform_win/string_util.cpp new file mode 100644 index 00000000..21d82c81 --- /dev/null +++ b/src/platform_win/string_util.cpp @@ -0,0 +1,20 @@ +#include "cru/platform/string_util.hpp" + +#include "cru/platform/win/exception.hpp" + +namespace cru::platform::util { +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<int>(result.size()), nullptr, + nullptr) == 0) + throw win::Win32Error(::GetLastError(), + "Failed to convert wide string to UTF-8."); + return result; +} +} // namespace cru::util |
