std::isalpha выдает bad_cast при использовании с boost::locale
У меня есть некоторые проблемы с использованием boost::locale (1.49) в Debian 7 GNU/Linux (версия GCC 4.6.3-1). Код сохраняется в cp1251. Использование таких функций, как "isalpha" (или "boost::gorith::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;
}
Он работает без исключения в Windows 7 с Visual Studio 2008. Однако есть еще одна проблема: в этом случае для "debug500" установлено значение false. Он работает нормально только тогда, когда локаль генерируется так: std::locale loc(".1251")
, Но та же проблема возникает, когда локаль генерируется boost: std::locale loc(boost::locale::generator().generate("ru_RU.cp1251"));
, Я был бы благодарен, если бы кто-то мог объяснить, что не так с кодом и / или как я могу сделать аналогичную проверку (isalpha), используя boost и std с языковым стандартом cp1251.
1 ответ
Заменить:
unsigned char debug501 = 'Б';
с:
char debug501 = 'Б';