문제

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에서는 예외 없이 실행됩니다.그러나 여전히 한 가지 문제가 있습니다.이 경우 "debug500"은 false로 설정됩니다.다음과 같이 로캘이 생성된 경우에만 제대로 작동합니다. std::locale loc(".1251").그러나 부스트에 의해 로케일이 생성되면 동일한 문제가 나타납니다. std::locale loc(boost::locale::generator().generate("ru_RU.cp1251"));.누군가 코드의 문제점 및/또는 cp1251 로케일과 함께 부스트 및 표준을 사용하여 유사한 검사(isalpha)를 수행할 수 있는 방법을 설명할 수 있다면 감사하겠습니다.

도움이 되었습니까?

해결책

바꾸다:

unsigned char debug501 = 'Б';

와 함께:

char debug501 = 'Б';
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top