Question

J'ai quelques problèmes avec l'utilisation de boost::locale (1.49) sur Debian 7 GNU/Linux (la version de GCC est 4.6.3-1).Le code est enregistré dans cp1251.L'utilisation de fonctions comme "isalpha" (ou "boost::algorithm::is_alpha") aboutit à une exception (bad_cast).On dirait qu'il n'y a pas de facette appropriée pour ce contrôle.Voici le code :

#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;
}

Il fonctionne sans exception sous Windows 7 avec Visual Studio 2008.Cependant, il reste un problème :"debug500" est défini sur false dans ce cas.Cela fonctionne correctement uniquement lorsque les paramètres régionaux sont générés comme ceci : std::locale loc(".1251").Mais le même problème apparaît lorsque les paramètres régionaux sont générés par boost : std::locale loc(boost::locale::generator().generate("ru_RU.cp1251"));.Je serais reconnaissant si quelqu'un pouvait expliquer ce qui ne va pas avec le code et/ou comment je peux effectuer une vérification similaire (isalpha) en utilisant boost et std avec les paramètres régionaux cp1251.

Était-ce utile?

La solution

Remplacer:

unsigned char debug501 = 'Б';

avec:

char debug501 = 'Б';
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top