質問

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では例外がなくなります。ただし、まだ1つのトラブルがあります。この場合、 "debug500"がfalseに設定されています。Localeがこのように生成された場合にのみ機能します.std::locale loc(".1251")。しかし、Boost:std::locale loc(boost::locale::generator().generate("ru_RU.cp1251"));によってロケールが生成されたときに同じ問題が表示されます。 誰かがコードの何が悪いのか、および/またはCP1251ロケールでブーストとSTDを使って同様の小切手(isalpha)を作ることができるのかを説明することができれば感謝します。

役に立ちましたか?

解決

交換:

unsigned char debug501 = 'Б';
.

char debug501 = 'Б';
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top