Ich versuche zu verstehen, wie boost :: locale verwendet wird, um Strings zu vergleichen, die Groß-/Kleinschreibung und Varianten ignorieren. Ich habe versucht, direkt einen Code von Boost-Dokumentation:Warum wird std :: bad_cast von boost :: locale geworfen?
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;
Dieser Code ein std :: bad_cast Ausnahme auslösen wird beim Laufen. Ich habe viele Parameter im Konstruktor von boost :: locale :: generator ausprobiert. Weiß jemand über das Problem, auf das ich stoße?
Ich bin mit C++ 11 mit g ++ 4.6 und Boost 1.51.0
Nur als Hinweis, die 'bad_cast' _exception_ signalisiert, dass die gegebene' locale' nicht die gewünschte 'Facette' hat. –