OS X 上的字符串到 wstring 转换
我正在尝试将 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。这个问题已经在这里讨论过,但没有成功: MacOS 10.6 上的 std::locale 损坏(LANG=en_US.UTF-8),此处 或此处。
有没有解决方法或其他方法来做到这一点?
I'm trying to convert a C++ string to a wstring.
I found the following code, that seems to deal with accents, which is what I'm looking for.
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());
}
Unfortunately, the code crashes for any other loc value than C or POSIX. This problem has already been discussed, without success, here: std::locale breakage on MacOS 10.6 with LANG=en_US.UTF-8, here or here.
Is there any workaround or an other way to do this ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最简单的是
......但要保留口音,您需要 codecvt 但是,这个示例可能有用。
The simplest would be
... but to preserve accents you'd need codecvt however, this example might be useful.