C ++ boost вылетает при использовании локали
Я пытаюсь использовать библиотеку Boost для обеспечения поддержки i18 для моего класса строки. Я использую компилятор Microsoft Visual Studio VC10 и 64-битную машину Windows 7.
Я могу скомпилировать и связать свое приложение с библиотекой Boost, однако мое приложение падает при вызове boost :: locale :: to_upper ().
Ниже приведен код, который я написал.
#include <boost/locale.hpp>
#include <boost/algorithm/string/case_conv.hpp>
#include <boost/system/config.hpp>
String::MakeUpper()()
{
boost::locale::generator gen;
std::locale loc = gen("");
std::locale::global(loc);
std::string str2 = boost::locale::to_upper("001Öä", loc); // application crashes here.
std::string str3 = boost::locale::to_upper("001Öä"); // This also does not work
}
Сбой происходит в следующей функции. эта функция выдает исключение плохого приведения.
template<class _Facet> inline
const _Facet& __CRTDECL use_facet(const locale& _Loc)
{ // get facet reference from locale
_BEGIN_LOCK(_LOCK_LOCALE) // the thread lock, make get atomic
const locale::facet *_Psave =
_Facetptr<_Facet>::_Psave; // static pointer to lazy facet
size_t _Id = _Facet::id;
const locale::facet *_Pf = _Loc._Getfacet(_Id);
if (_Pf != 0)
; // got facet from locale
else if (_Psave != 0)
_Pf = _Psave; // lazy facet already allocated
else if (_Facet::_Getcat(&_Psave, &_Loc) == (size_t)(-1))
#if _HAS_EXCEPTIONS
_THROW_NCEE(bad_cast, _EMPTY_ARGUMENT); // lazy disallowed
....
....
....
}
Не могли бы вы помочь мне.
С уважением, Сумит