STD :: isalpha boost :: localeを使用してbad_castをスローします。
-
12-12-2019 - |
質問
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 = 'Б';
. 所属していません StackOverflow