【Visual C++ 2008】【Win32】
文字の種類を判別する方法。 GetStringTypeEx APIを使用する。
// 引数dataはUnicode文字列
void CXxxxx::xxxx(const wchar_t *data)
{
// 文字列の文字数
int length = wcslen(data);
// 文字情報の配列
WORD *type = new WORD[length];
// 文字情報を取得
if (GetStringTypeEx(0, CT_CTYPE3, data, length, type))
{
// 取得成功
for (int i = 0; i < length; i++)
{
// 1文字毎に判定
if ((type[i] & C3_HALFWIDTH) == C3_HALFWIDTH)
{
// 半角英数、半角カタカナ、半角スペース
//
//
//
}
if ((type[i] & C3_FULLWIDTH) == C3_FULLWIDTH)
{
// 全角英数、全角カタカナ、全角スペース
//
//
//
}
if ((type[i] & C3_IDEOGRAPH) == C3_IDEOGRAPH)
{
// 全角漢字
//
//
//
}
if ((type[i] & C3_KATAKANA) == C3_KATAKANA)
{
// 半角カタカナ、全角カタカナ
//
//
//
}
if ((type[i] & C3_HIRAGANA) == C3_HIRAGANA)
{
// 全角ひらがな
//
//
//
}
}
}
else
{
// 取得失敗
//
//
//
}
// 文字情報の解放
delete [] type;
return;
}
(メモ)
- 以下の点に注意
- カタカナは、「C3_KATAKANA」と「C3_HALFWIDTHまたはC3_FULLWIDTH」の2カ所に引っ掛かる
- 漢字、ひらがなは、「C3_FULLWIDTH」に引っ掛からない
- MSDNライブラリの「GetStringTypeEx」を参照のこと