gpt4 book ai didi

c++ - boost::locale::to_lower 抛出 bad_cast 异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:59 30 4
gpt4 key购买 nike

在 Win 7 64 位和 VS2010 上 boost 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)。任何的想法?谢谢!马里奥

最佳答案

当您的区域设置传递给 boost::locale::to_lower(默认情况下 std::locale(),这是全局的拷贝时,将抛出此异常locale) 没有安装 boost::locale::converter facet。 See this for the related documentation.

使用 boost::locale::generator 来创建语言环境。 (另请参阅文档链接到的示例,例如 this one。)

关于c++ - boost::locale::to_lower 抛出 bad_cast 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19751189/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com