.Net2005 vista MFCです。
ユニコード文字列で、1文字づつ半角か全角かを見分けるには、どうしたらいいでしょうか。
過去ログを見て、CLRではTextWidthメソッドを使う、というような質疑があったのですが、MFCでは見つかりませんでした。
よろしくお願いします。
何を基準に全角・半角としますか?
Shift_JISコードのときに2バイト使うってことであれば、MFCなら
CStringAクラスを使って確認できます。
(WideCharToMultiByte関数でもできます。)
何かに表示するときの幅であれば、表示するデバイスコンテキストを使って、実際横幅がいくつになるのか
は確認できます。
書き忘れ
>Shift_JISコードのときに2バイト使うってことであれば
はShift_JISコードで表示できないものは使えません。
半角=1byte文字としてよいのなら、
どうがんばっても256個しかないんだから、
半角文字一覧をこしらえといて、
それに載ってるかを調べるんでもいいかも。
使ったこと無いけど GetStringTypeEx() は?
編集 削除Blueさん、επιστημηさん、nさん、たいへんありがとうございました。
ご指摘の通り、印刷の幅を揃えたくて、質問しました。
επιστημηさんのおっしゃるように配列にしようかと思ったのですが、あちこちくぐって、_istasciiと_istalnumの組み合わせで解決しました。
漏れがあったら個別に対応しようと思ったのですが、今のところ大丈夫そうです。
たいへんお騒がせしました。