Pregunta

Tengo algunos problemas con el uso de Boost :: Locale (1.49) en Debian 7 GNU / Linux (la versión de GCC es 4.6.3-1).El código se guarda en CP1251.Usando funciones como "Isalpha" (o "Boost :: algoritmo :: is_alpha") termina con excepción (BAD_CAST).Parece que no hay faceta adecuada para este cheque.Aquí está el código:

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

Se ejecuta sin excepción en Windows 7 con Visual Studio 2008. Sin embargo, todavía hay un problema: "Debug500" se establece en FALSO en este caso.Funciona bien solo cuando el local se genera así: std::locale loc(".1251").Pero aparece el mismo problema cuando el local se genera al impulso: std::locale loc(boost::locale::generator().generate("ru_RU.cp1251"));. Me agradecería si alguien pudiera explicar lo que está mal con el código y / o cómo puedo hacer un cheque similar (Isalpha) usando BOOST y STD con CP1251 Locale.

¿Fue útil?

Solución

Reemplazar:

unsigned char debug501 = 'Б';

con:

char debug501 = 'Б';

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top