以下コピペ
文字の種類を判別する方法。 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」を参照のこと
ネタ元