次の関数は、Javaのために書かれた、私のフレームワーク( "CodeGearのC++ Builderは")このエラーを示していることC.ユニコード文字がCで指定された範囲内にあるかどうかをチェックする方法は?
bool isFullwidthKatakana(WideChar C)
{
return(('\u30a0'<=C)&&(C<='\u30ff'));
}
問題があるために適応されています:
[BCC32 Warning] Unit1.cpp(101): W8114 Character represented by universal-character-name '\u30a0' cannot be represented in the current code page (1252)
とを条件が満たされたかどうかはtrueを返しません。
たとえば、入力は「ア」(0x30A2)です。
どうすればよいですか?コードページを変更するにはどうすればよいですか?
3人の回答に感謝します。
return((0x30a0<=C)&&(C<=0x30ff));
それは表現\ u30a0が正しくなかったと思われ、これはすべての符号なし整数に(明示的または暗黙的に)文字をキャストすることが可能です
return((0x30a0<=C)&&(C<=0x30ff));
return (unsigned int) C >= 0x30a0u && (unsigned int) C <= 0x30ffu;
return((L'\u30a0'<=C)&&(C<=L'\u30ff'));
提案:あなたはコードポイントが有効であるかどうかを確認する方法を求めていないので(UTF-8は、*すべての*有効なUnicodeコードポイントをエンコードすることができ、タイトルを変更するに)。 – Richard
使用しているC++ Builderのバージョンは? – stukelly
CodeGear C++ Builder 2009 – Nek