4

在 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 单词。我没有发现这样的问题,所以我认为这是我的机器特定问题或 boost 库问题。顺便说一句,我已经从 sourceforge 下载了预编译的 boost 库(boost_1_54_0-msvc-10.0-64.exe)。任何想法?谢谢!马里奥

4

1 回答 1

8

boost::locale::to_lower当您传递给的语言环境(默认情况下std::locale(),即全局语言环境的副本)没有安装构面时,将引发此异常boost::locale::converter有关相关文档,请参阅此内容。

boost::locale::generator改为使用 a创建语言环境。(另请参阅文档链接的示例,例如这个。)

于 2013-11-03T08:57:42.807 回答