#pragma once #include #include #include namespace XCEngine::UI::Editor::App::Internal { inline std::wstring Utf8ToWide(std::string_view text) { if (text.empty()) { return {}; } const int requiredChars = MultiByteToWideChar( CP_UTF8, 0, text.data(), static_cast(text.size()), nullptr, 0); if (requiredChars <= 0) { return {}; } std::wstring wide(static_cast(requiredChars), L'\0'); const int convertedChars = MultiByteToWideChar( CP_UTF8, 0, text.data(), static_cast(text.size()), wide.data(), requiredChars); if (convertedChars <= 0) { return {}; } wide.resize(static_cast(convertedChars)); return wide; } inline std::string WideToUtf8(std::wstring_view text) { if (text.empty()) { return {}; } const int requiredBytes = WideCharToMultiByte( CP_UTF8, 0, text.data(), static_cast(text.size()), nullptr, 0, nullptr, nullptr); if (requiredBytes <= 0) { return {}; } std::string utf8(static_cast(requiredBytes), '\0'); const int convertedBytes = WideCharToMultiByte( CP_UTF8, 0, text.data(), static_cast(text.size()), utf8.data(), requiredBytes, nullptr, nullptr); if (convertedBytes <= 0) { return {}; } utf8.resize(static_cast(convertedBytes)); return utf8; } } // namespace XCEngine::UI::Editor::App::Internal