多バイト/ワイド文字関数 (string.h)

int mblen( const char* mbs, size_t mlen );

mbs の先頭文字のバイト サイズを取得します。 この呼び出しは、mbtowc( NULL, mbs, mlen ) と等価です。

参照   _iskanji

int mbtowc( wchar_t* wc, const char* mb, size_t mlen );

多バイト文字 mb をワイド文字に変換し、*wc に書き込みます。ただし、wc が NULL の場合、書き込みは行われません。mlen には、変換する最大バイト数を指定します。

戻り値は、多バイト文字のバイト数です。ただし、mbs が NULL の場合、mlen が 0 の場合、および mbs[0] が 0 の場合は、0 が返されます。

Light C では、_iskanji を使って文字のサイズが判定されます。

int wctomb( char* mb, wchar_t wc );

ワイド文字 wc を多バイト文字に変換し、mb に書き込みます。mb には、最大で MB_CUR_MAX バイトのデータが書き込まれます。MB_CUR_MAX は stdlib.h で定義されており、Light C では 2 です。

戻り値は、mb に書き込まれたバイト数です。ただし、wc が 0 の場合は、mb[0] に 0 が書き込まれますが、0 が返されます。

size_t mbstowcs( wchar_t* wcs, const char* mbs, size_t wlen );

多バイト文字列 mbs をワイド文字列に変換し、wcs に書き込みます。wlen には、wcs で受け取る最大文字数を指定します。

wlen まで書き込むか、mbs[] 上の 0 に到達すると、変換は終了します。後者の場合は、wcs[] の末尾に 0 が書き込まれます。

戻り値は、wcs に書き込まれた文字数です。末尾の 0 は含まれません。

size_t wcstombs( char* mbs, const wchar_t* wcs, size_t mlen );

ワイド文字列 wcs を多バイト文字列に変換し、mbs に書き込みます。mlen には、mbs で受け取る最大バイト数を指定します。

書き込み長が mlen を超えそうになるか、wcs[] 上の 0 に到達すると、変換は終了します。後者の場合は、mbs[] の末尾に 0 が書き込まれます。

戻り値は、mbs に書き込まれたバイト数です。末尾の 0 は含まれません。

size_t wcslen( const wchar_t* src );
wchar_t*
wcscpy( wchar_t* dst, const wchar_t* src );
wchar_t*
wcsncpy( wchar_t* dst, const wchar_t* src, size_t len );
wchar_t*
wcscat( wchar_t* dst, const wchar_t* src );
wchar_t*
wcsncat( wchar_t* dst, const wchar_t* src, size_t len );
int
wcscmp( const wchar_t* dst, const wchar_t* src );
int
wcsncmp( const wchar_t* dst, const wchar_t* src, size_t len );

それぞれ、"wcs" を "str" に読み替えた名前を持つ関数のワイド文字版です。

参照   strlenstrcpystrncpystrcatstrncatstrcmpstrncmp