我正在尝试将C ++字符串转换为wstring。 我找到了以下代码,似乎处理重音,这正是我正在寻找的。 p>
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 on MacOS 10.6 with LANG=en_US.UTF-8,here或here。
是否有任何解决方法或其他方法可以执行此操作?
答案 0 :(得分:1)