4

Win 7 64 ビットおよび VS2010 で 1.54 x64 をブーストします。「Release x64」としてコンパイルし、次のコードを実行します。

#include <boost/locale/conversion.hpp>
std::wstring y = L"NoNseNSE";
std::wstring w = boost::locale::to_lower(y);

例外をスローしstd::bad_castます。追加しても何も変わりません(他の場所で提案されているように):

std::locale mylocale("");
std::locale::global(mylocale);

環境内で LANGの代わりに使用するか、LANG を設定しto_lower(y)ます。to_lower(y, mylocale)std::stringstd::wstring

目標は、小文字のイタリア語 UTF-8 単語に変換することです。私はこのような問題を回避していないので、マシン固有の問題かブースト ライブラリの問題であると推測します。ところで、sourceforge からプリコンパイル済みブースト ライブラリ (boost_1_54_0-msvc-10.0-64.exe) をダウンロードしました。何か案が?ありがとう!マリオ

4

1 に答える 1

8

この例外は、渡されたロケールboost::locale::to_lower(デフォルトではグローバル ロケールのコピー) にファセットがインストールされstd::locale()ていない場合にスローされます。関連ドキュメントについては、こちらを参照してください。boost::locale::converter

代わりに、aboost::locale::generatorを使用してロケールを作成してください。(ドキュメントでリンクされている例、たとえばthis oneも参照してください。)

于 2013-11-03T08:57:42.807 に答える