3

我正在尝试将 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此处此处

是否有任何解决方法或其他方法可以做到这一点?

4

1 回答 1

1

最简单的应该是

std::wstring w( s.begin(), s.end() );

...但是要保留重音,您需要codecvt但是,此示例可能很有用。

于 2010-01-16T12:16:04.473 回答