#include <string>
#include <windows.h>
std::wstring Utf8ToWide(const std::string& utf8Str) {
if (utf8Str.empty()) return L"";
// 1. Узнаем размер необходимого буфера для широкой строки
int wlen = MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, nullptr, 0);
// 2. Выделяем память и проводим конвертацию
std::wstring wstr(wlen, 0);
MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, &wstr[0], wlen);
// Убираем автоматически добавившийся нулевой символ в конце строки std::wstring
if (!wstr.empty() && wstr.back() == L'\0') {
wstr.pop_back();
}
return wstr;
}