1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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(), static_cast<int>(result.capacity()), nullptr, nullptr) == 0)
throw Win32Error(::GetLastError(), "Failed to convert wide string to UTF-8.");
return result;
}
}
|