gpt4 book ai didi

c++ - std::isalpha 在与 boost::locale 一起使用时抛出 bad_cast

转载 作者:太空狗 更新时间:2023-10-29 23:19:06 25 4
gpt4 key购买 nike

我在 Debian 7 GNU/Linux(GCC 版本为 4.6.3-1)上使用 boost::locale (1.49) 时遇到一些问题。代码保存在cp1251中。使用像“isalpha”(或“boost::algorithm::is_alpha”)这样的函数以异常结束(bad_cast)。看起来这张支票没有合适的方面。这是代码:

#include <iostream>

#include <boost/locale.hpp>

int main ()
{
boost::locale::generator gen;
std::locale loc(gen.generate("ru_RU.cp1251"));
unsigned char debug501 = 'Б';
bool debug500 = std::isalpha(debug501, loc);
std::cout<< debug500;

return 0;
}

它在带有 Visual Studio 2008 的 Windows 7 上无一异常(exception)地运行。但是,仍然存在一个问题:在这种情况下“debug500”被设置为 false。仅当像这样生成语言环境时它才能正常工作:std::locale loc(".1251")。但是当 locale 由 boost 生成时会出现同样的问题:std::locale loc(boost::locale::generator().generate("ru_RU.cp1251"));。如果有人可以解释代码有什么问题和/或我如何使用带有 cp1251 语言环境的 boost 和 std 进行类似的检查 (isalpha),我将不胜感激。

最佳答案

替换:

unsigned char debug501 = 'Б';

与:

char debug501 = 'Б';

关于c++ - std::isalpha 在与 boost::locale 一起使用时抛出 bad_cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10687907/

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