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


猫ち  2008-01-18 22:24:25  No: 67337

.Net2005  vista  MFCです。

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

よろしくお願いします。


Blue  2008-01-18 23:14:19  No: 67338

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

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

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


Blue  2008-01-18 23:15:20  No: 67339

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


επιστημη  URL  2008-01-19 01:51:10  No: 67340

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


n  2008-01-20 23:07:38  No: 67341

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


猫ち  2008-01-21 05:24:44  No: 67342

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

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加