自力で改行するには

解決


saisan  2006-04-09 05:42:55  No: 61183  IP: 192.*.*.*

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 06:12:13  No: 61184  IP: 192.*.*.*

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

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

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

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

編集 削除
saisan  2006-04-09 06:41:05  No: 61185  IP: 192.*.*.*

やはりそうなのですか!

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

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

編集 削除