■ ユニコードで、文字列を1文字づつ半角か全角かを見分けるには
猫ち
2008/01/18(金) 13:24:25 <初心者> 
.Net2005 vista MFCです。
ユニコード文字列で、1文字づつ半角か全角かを見分けるには、どうしたらいいでしょうか。
過去ログを見て、CLRではTextWidthメソッドを使う、というような質疑があったのですが、MFCでは見つかりませんでした。
よろしくお願いします。
Blue
2008/01/18(金) 14:14:19
何を基準に全角・半角としますか?
Shift_JISコードのときに2バイト使うってことであれば、MFCなら
CStringAクラスを使って確認できます。
(WideCharToMultiByte関数でもできます。)
何かに表示するときの幅であれば、表示するデバイスコンテキストを使って、実際横幅がいくつになるのか
は確認できます。
Blue
2008/01/18(金) 14:15:20
書き忘れ
>Shift_JISコードのときに2バイト使うってことであれば
はShift_JISコードで表示できないものは使えません。
επιστημη
[HomePage]
2008/01/18(金) 16:51:10
半角=1byte文字としてよいのなら、
どうがんばっても256個しかないんだから、
半角文字一覧をこしらえといて、
それに載ってるかを調べるんでもいいかも。
n
2008/01/20(日) 14:07:38
使ったこと無いけど GetStringTypeEx() は?
猫ち
2008/01/20(日) 20:24:44 <初心者> 
Blueさん、επιστημηさん、nさん、たいへんありがとうございました。
ご指摘の通り、印刷の幅を揃えたくて、質問しました。
επιστημηさんのおっしゃるように配列にしようかと思ったのですが、あちこちくぐって、_istasciiと_istalnumの組み合わせで解決しました。
漏れがあったら個別に対応しようと思ったのですが、今のところ大丈夫そうです。
たいへんお騒がせしました。
毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!
