大文字と小文字の区別を無視して文字列を比較するために boost::locale を使用する方法を理解しようとしています。Boostのドキュメントからコードを直接試しました:
http://www.boost.org/doc/libs/1_51_0/libs/locale/doc/html/collation.html
boost::locale::generator gen;
std::locale vLocale = gen("");
std::wstring a=L"Façade", b=L"facade";
// Following will throw bad_cast
bool eq = std::use_facet<boost::locale::collator<wchar_t>>(vLocale).compare(
boost::locale::collator_base::secondary,
a,
b
) == 0;
if(eq) std::cout << "OK" << std::endl;
このコードは、実行時に std::bad_cast 例外をスローします。boost::locale::generator のコンストラクターで多くのパラメーターを試しました。私が遭遇した問題について知っている人はいますか?
g++4.6 および Boost 1.51.0 で C++11 を使用しています