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値を指定すると、コードがクラッシュします。この問題はすでに議論されていますが、うまくいきませんでした。こちら: std::locale breakage on MacOS 10.6 with LANG=en_US.UTF-8こちらまたはこちら

これを行うための回避策または他の方法はありますか?

4

1 に答える 1

1

最も簡単なのは

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

...しかし、アクセントを保持するにはcodecvtが必要ですが、このは役に立つかもしれません。

于 2010-01-16T12:16:04.473 に答える