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、こちらまたはこちら。
これを行うための回避策または他の方法はありますか?