boost :: locale :: to_lower抛出bad_cast异常

时间:2013-11-03 08:39:51

标签: c++ boost boost-locale

在Win 7 64位和VS2010上提升1.54 x64。编译为“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字。我没有找到这样的问题,所以我认为这是我的机器特定问题或升级库问题。顺便说一下,我从sourceforge下载了预编译的boost库(boost_1_54_0-msvc-10.0-64.exe)。任何的想法? 谢谢! 马里奥

1 个答案:

答案 0 :(得分:6)

当您的语言环境传递给boost::locale::to_lower(默认情况下为std::locale(),即全局语言环境的副本)没有安装boost::locale::converter方面时,会抛出此异常。 See this for the related documentation.

使用boost::locale::generator代替创建区域设置。 (另请参阅文档链接的示例,例如this one。)