Что я пробовал:
Способ номер 1std::wstring convertToWstring(const std::string& str)
{
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
std::wstring wtext = converter.from_bytes(str.c_str());
return wtext;
}
Программа просто вылетает на строке std::wstring wtext = converter.from_bytes(str). Пишет "Abort has been called". При дебаге пишет " исключение Microsoft C++: std::range_error по адресу памяти 0x03E6EEC4".
Способ №2std::wstring convertToWstring(const std::string& str)
{
std::wstring wStr(str.begin(), str.end());
return wStr;
}
В итоге в результирующей строке вместо кириллицы какие-то иероглифы. То есть прохожу дебагом, в str нормальные данные, а после вызова конструктора с итераторами - wstring в иероглифах.
Третий способstd::wstring convertToWstring(const std::string& str)
{
wchar_t* pWChr = new wchar_t[str.size()];
size_t outSize;
mbstowcs_s(&outSize, pWChr, str.size(), str.c_str(), str.size());
std::wstring wStr(pWChr);
delete[] pWChr;
return wStr;
}
Здесь вообще своя ошибка. По этому поводу сделал скриншот.
Итак, кто-то может помочь в решении данной проблемы?