いま、「ABC」とか「あいう」とかがごちゃ混ぜになった文字列から、
半角なら半角、全角なら全角を一文字ずつ取り出したいのですがうまくいきません。
なにかいい方法はないでしょうか?
開発環境は?
対象文字コードは?
> うまくいきません。
「何が」?
説明不足でした。
環境はVisual C++ 2003 で、文字コードはASCIIコードです。
うまくいかないとは、文字を一文字ずつ取り出しだして、画面に表示させようとしたところ、
配列を一つずつ参照してみると、全角のときにまず文字が表示できない変な文字が表示され、
二回目にちゃんと全角が表示されます。
このときに、全角だったら一気に2つ、半角だったら1つと配列を参照したいのですが、
どうすればそのような区別ができるでしょうか?
ASCII コードに「あいう」などという文字はありません。
Shift-JIS コードの間違いでしょうか?
Shift-JIS コードでは、先行バイトは 0x81 〜 0x9f と 0xe0 〜 0xfc の範囲になります。
この範囲に半角文字は含まれませんので、1バイト読んでこの範囲に無ければ取り出し、この範囲にあれば貯めておいて、次のバイトと結合して取り出し、という処理になります。
シャノンさん、ありがとうございます。
一応主な文字の0 〜 0x81位しか使わないので、その範囲でやってみたところ、
うまくいきました。
ありがとうございました。
ツイート | ![]() |