boost :: locale :: to_lower выдает исключение bad_cast

Повышение 1.54 x64 на Win 7 64bit и VS2010. Компилируем как «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);

или меняется to_lower(y) чтобы: to_lower(y, mylocale) или используя std::string вместо std::wstring или настройка LANG в среде.

Цель состоит в том, чтобы перевести на итальянский язык UTF-8 строчные буквы. Я не нашел таких проблем, как эта, поэтому я предполагаю, что это проблема моей машины или проблема с библиотекой наддува. Кстати, я скачал предварительно скомпилированную библиотеку наддува (boost_1_54_0-msvc-10.0-64.exe) из sourceforge. Любая идея?
Спасибо!
марио

4

Решение

Это исключение выдается, когда ваша локаль перешла на boost::locale::to_lower (по умолчанию std::locale(), то есть копия глобальной локали) не имеет boost::locale::converter Фасет установлен. Смотрите это для соответствующей документации.

Использовать boost::locale::generator вместо этого создать локаль. (См. Также примеры, связанные с документацией, например, этот.)

6

Другие решения

Других решений пока нет …