|
|
|
| 2008/10/07 11:45||▲
|
|
|
よく似た名前の関数が続きますが、今回は、多バイト文字列からワイド文字列に変換するmbstowcs関数です。例によって、現時点では"C"ロケールにしか対応しませんので、実装は簡単です。
#include <stddef.h>
size_t mbstowcs(wchar_t * __restrict__ pwcs, const char * __restrict__ s, size_t n) { register wchar_t *p = pwcs; for (wchar_t *t = p + n; p != t && (*p = (unsigned char)*s) != L'\0'; p++, s++) ; return p - pwcs; }
この関数は、書き込んだワイド文字数を返しますが、n文字を超えて書き込むことはなく、返却値がnの場合には、終端にナルワイド文字が格納されません。
"C"ロケール以外に対応させるには、内部的にmbtowc関数を呼び出した方がよいのかもしれませんが、全てのライブラリ関数はmbtowc関数を呼び出さないかのように振舞わなければなりませんので、実際にはもう一工夫する必要がありそうです。
|
| 2006/06/19 06:31|一般ユーティリティ|TB:0|CM:0|▲
|
|
|
コメント
|
|
コメントの投稿
|
|
|
|
|
トラックバック
|
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/72-7cf121ee
|
|
|
|
|
ホーム
全記事一覧
<< 前の記事
次の記事 >>
|