Я пытаюсь преобразовать строку C ++ в строку wstring.
Я нашел следующий код, который, кажется, имеет дело с акцентами, и это то, что я ищу.
std::wstring widen(const std::string& s)
{
std::vector<wchar_t> buffer(s.size());
std::locale loc("fr_FR");
std::use_facet< std::ctype<wchar_t> >(loc).widen(s.data(), s.data() + s.size(), &buffer[0]);
return std::wstring(&buffer[0], buffer.size());
}
Источник
К сожалению, код падает для любого другого значения loc , отличного от C или POSIX. Эта проблема уже обсуждалась без успеха здесь: std :: locale breakage в MacOS 10.6 с LANG = en_US.UTF-8 , здесь или здесь .
Есть ли обходной путь или другой способ сделать это?