diff options
author | crupest <crupest@outlook.com> | 2018-09-20 22:50:37 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2018-09-20 22:50:37 +0800 |
commit | 5f7d3268e3d2ea84a1afc97c209b703bf4092c76 (patch) | |
tree | 8cab3c7457420b55376e5825f0cdfefd47551c00 /CruUI/base.cpp | |
parent | 6cd7b4e168fdda6bf83187cda9269cad5f9ee0ed (diff) | |
download | cru-5f7d3268e3d2ea84a1afc97c209b703bf4092c76.tar.gz cru-5f7d3268e3d2ea84a1afc97c209b703bf4092c76.tar.bz2 cru-5f7d3268e3d2ea84a1afc97c209b703bf4092c76.zip |
Improve linear layout.
Diffstat (limited to 'CruUI/base.cpp')
-rw-r--r-- | CruUI/base.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/CruUI/base.cpp b/CruUI/base.cpp new file mode 100644 index 00000000..c6b57e33 --- /dev/null +++ b/CruUI/base.cpp @@ -0,0 +1,20 @@ +#include "base.h" + +#include "system_headers.h" +#include "exception.h" + +namespace cru +{ + MultiByteString ToUtf8String(const StringView& string) + { + if (string.empty()) + return MultiByteString(); + + const auto length = ::WideCharToMultiByte(CP_UTF8, 0, string.data(), -1, nullptr, 0, nullptr, nullptr); + MultiByteString result; + result.reserve(length); + if (::WideCharToMultiByte(CP_UTF8, 0, string.data(), -1, result.data(), result.capacity(), nullptr, nullptr) == 0) + throw Win32Error(::GetLastError(), "Failed to convert wide string to UTF-8."); + return result; + } +} |