Повышение 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. Любая идея?
Спасибо!
марио
Это исключение выдается, когда ваша локаль перешла на boost::locale::to_lower
(по умолчанию std::locale()
, то есть копия глобальной локали) не имеет boost::locale::converter
Фасет установлен. Смотрите это для соответствующей документации.
Использовать boost::locale::generator
вместо этого создать локаль. (См. Также примеры, связанные с документацией, например, этот.)
Других решений пока нет …