[1206] Re:os
投稿者:(ぱ)こと管理人
2009/01/11 00:25:15
>ここが解せないんですよ。たとえば
>int
>dvm_mbstowcs_len(const char *src)
>{
> return mbstowcs(NULL, src, 0);
>}
>で良い筈なので、繰り返しは必要ないと思うんですが...
やったのがかなり昔のことなのでもはや覚えていないのですが、
考えられる原因としては、以下のようなものが考えられます。
(1)Windowsでは、mbsrtowcs()だけでなくてmbstowcs()も動かなかった。
→当時はXPだったのですが、今Vistaで試したらあっさり両方動いてしまったので
検証不能です…
(2)mbstowcs()なら動いたが、rがついていないのでよろしくない関数だと
思い込んでいた。
→この使い方なら、mbstowcs()側に状態を覚えさせないので、問題ないと
思いますが。
(3)mbstowcs()の第1引数にNULLを渡すと変換を行わない、という仕様を知らなかった。
→実のところ現在は完璧に忘れていました。当時はちゃんとマニュアル読んだので、
知らなかったということはないと思うのですが…