我正在尝试将 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());
}
不幸的是,对于 C 或 POSIX 之外的任何其他loc值,代码都会崩溃。这个问题已经在此处讨论过,但没有成功:MacOS 10.6 上的 std::locale breakage with LANG=en_US.UTF-8,此处或此处。
是否有任何解决方法或其他方法可以做到这一点?