ユニコードで、文字列を1文字づつ半角か全角かを見分けるには


猫ち  2008-01-18 13:24:25  No: 67337  IP: 192.*.*.*

.Net2005  vista  MFCです。

ユニコード文字列で、1文字づつ半角か全角かを見分けるには、どうしたらいいでしょうか。
過去ログを見て、CLRではTextWidthメソッドを使う、というような質疑があったのですが、MFCでは見つかりませんでした。

よろしくお願いします。

編集 削除
Blue  2008-01-18 14:14:19  No: 67338  IP: 192.*.*.*

何を基準に全角・半角としますか?

Shift_JISコードのときに2バイト使うってことであれば、MFCなら
CStringAクラスを使って確認できます。
(WideCharToMultiByte関数でもできます。)


何かに表示するときの幅であれば、表示するデバイスコンテキストを使って、実際横幅がいくつになるのか
は確認できます。

編集 削除
Blue  2008-01-18 14:15:20  No: 67339  IP: 192.*.*.*

書き忘れ
>Shift_JISコードのときに2バイト使うってことであれば
はShift_JISコードで表示できないものは使えません。

編集 削除
επιστημη  URL  2008-01-18 16:51:10  No: 67340  IP: 192.*.*.*

半角=1byte文字としてよいのなら、
どうがんばっても256個しかないんだから、
半角文字一覧をこしらえといて、
それに載ってるかを調べるんでもいいかも。

編集 削除
n  2008-01-20 14:07:38  No: 67341  IP: 192.*.*.*

使ったこと無いけど GetStringTypeEx() は?

編集 削除
猫ち  2008-01-20 20:24:44  No: 67342  IP: 192.*.*.*

Blueさん、επιστημηさん、nさん、たいへんありがとうございました。

ご指摘の通り、印刷の幅を揃えたくて、質問しました。

επιστημηさんのおっしゃるように配列にしようかと思ったのですが、あちこちくぐって、_istasciiと_istalnumの組み合わせで解決しました。
漏れがあったら個別に対応しようと思ったのですが、今のところ大丈夫そうです。

たいへんお騒がせしました。

編集 削除