自力で改行するには

解決


saisan  2006-04-09 14:42:55  No: 61183

char buf[256]={"あいうえおかきくけこ…"};
のような文字列を200バイトで改行しようとしています。

現在buf[199]の前後で_ismbblead()と_ismbbtrail()を使って半角か全角かを調べ、199目か198目で2つの文字列に分けています。

これでほぼ上手くいくのですが、ごく一部の全角文字列で文字化けします。調べてみると、その文字列の文字コードは第2バイトが第1バイトにも含まれ、第1バイトが第2バイトにも含まれています。

そこで疑問なのですが、buf[199]の前後だけを見て直接判断するのは不可能で、先頭のbuf[0]から1つずつ判断していかないと駄目なのでしょうか?

またその場合、そういう処理を自動で行ってくれるAPI等はあるのでしょうか?


Ban  2006-04-09 15:12:13  No: 61184

> そこで疑問なのですが、buf[199]の前後だけを見て直接判断するのは
> 不可能で、先頭のbuf[0]から1つずつ判断していかないと
> 駄目なのでしょうか?

基本的には Yes.
行頭でなくても、「区切れ」とわかっている場所から始めればいいので、
条件を満たせばそこから始めることは可能ですが。

> またその場合、そういう処理を自動で行ってくれるAPI等はあるのでしょうか?

環境依存ですが、
_ismbslead、_ismbstrail
これらなら「文字列の先頭または既にわかっている先行バイトへのポインタ」
から判断してくれます。


saisan  2006-04-09 15:41:05  No: 61185

やはりそうなのですか!

>第2バイトが第1バイトにも含まれ、
辺りから、薄々諦めていたのですが、これで完全に諦めがつきました^^;
今回はおとなしく先頭から判断していくことにします(その方が私の処理的には都合が良いようですので)。

返答有難うございましたm(__)m


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

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






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