diff --git a/Controllers/CoolerMasterController/CMKeyboardController/CMKeyboardV2Controller.cpp b/Controllers/CoolerMasterController/CMKeyboardController/CMKeyboardV2Controller.cpp index 3f2fe9da..94872349 100644 --- a/Controllers/CoolerMasterController/CMKeyboardController/CMKeyboardV2Controller.cpp +++ b/Controllers/CoolerMasterController/CMKeyboardController/CMKeyboardV2Controller.cpp @@ -14,6 +14,7 @@ #include #include "CMKeyboardV2Controller.h" #include "LogManager.h" +#include "StringUtils.h" CMKeyboardV2Controller::CMKeyboardV2Controller(hid_device* dev_handle, hid_device_info* dev_info) : CMKeyboardAbstractController(dev_handle, dev_info) { @@ -98,7 +99,7 @@ std::string CMKeyboardV2Controller::_GetFirmwareVersion() } std::u16string usFirmwareVersion(reinterpret_cast(cVersionStr+8)); - std::string sFirmwareVersion(usFirmwareVersion.begin(), usFirmwareVersion.end()); + std::string sFirmwareVersion(StringUtils::u16string_to_string(usFirmwareVersion)); LOG_VERBOSE("[%s] GetFirmwareVersion(): [%s]", m_deviceName.c_str(), sFirmwareVersion.c_str()); diff --git a/StringUtils.cpp b/StringUtils.cpp index c6ce5795..c1805cbb 100644 --- a/StringUtils.cpp +++ b/StringUtils.cpp @@ -57,6 +57,13 @@ std::string StringUtils::wstring_to_string(const std::wstring wstring) return(converter.to_bytes(wstring)); } +std::string StringUtils::u16string_to_string(const std::u16string wstring) +{ + std::wstring_convert,char16_t> converter; + + return(converter.to_bytes(wstring)); +} + const std::string StringUtils::remove_null_terminating_chars(std::string input) { while (!input.empty() && input.back() == 0) diff --git a/StringUtils.h b/StringUtils.h index 4c730590..f69bb65d 100644 --- a/StringUtils.h +++ b/StringUtils.h @@ -16,5 +16,6 @@ class StringUtils public: static const char* wchar_to_char(const wchar_t* pwchar); static std::string wstring_to_string(const std::wstring wstring); + static std::string u16string_to_string(const std::u16string wstring); static const std::string remove_null_terminating_chars(std::string input); };