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

boost::locale::to_lower throw bad_cast exception

本文关键字:bad cast 异常 抛出 lower to boost locale      更新时间:2023-10-16

Boost 1.54 x64 on Win 7 64 bits和VS2010。编译为"发布 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_1_54_0-msvc-10.0-64.exe)。知道吗?谢谢!马里奥

当您的区域

设置传递给boost::locale::to_lower(默认情况下std::locale(),即全局区域设置的副本)未安装boost::locale::converter方面时,将引发此异常。有关相关文档,请参阅此处。

请改用boost::locale::generator创建区域设置。(另请参阅文档链接到的示例,例如本示例。