ブーストを使用して異なる文字列エンコーディング間で変換するのに問題があります。 これを読んだ後、私はこれをやってみました:
boost::locale::generator gen;
std::locale loc = gen.generate("");// encoding local to the computer.
//std::locale loc = gen.generate("en_US.UTF-8"); // tried this too
//std::locale loc = gen.generate("en_US.UTF-8"); //doesn't work either
std::string someString = "test me";
std::string output = boost::locale::conv::to_utf<char>(someString, loc);
ただし、to_utf内でuse_facet()を試行すると、常にstd::bad_castで失敗します。
これは、生成されているロケールでブーストlocale::infoファセットが使用できないことを示しています。しかし、私は運が悪かったいくつかの異なる世代を試しました、そして私はシステムのデフォルトが常に機能することを期待しているので、私はどこか他の場所で何か間違ったことをしているに違いありません。
何か案は?