mbrtowc

多バイト文字 (multibyte character) をワイド文字 (wide character) に変換します.

#include <wchar.h>
size_t mbrtowc (
    wchar_t * restrict pwc,
    const char * restrict s,
    size_t n,
    mbstate_t * restrict ps
);

mbrtowc 関数は,まず s が指すバイトで始まる最大 n バイトを検査し,次の多バイト文字を完結するために必要なバイト数 (シフトシーケンスを含めて) を求めます. 次の多バイト文字が完結し,かつそれが正しければ対応するワイド文字の値を求め pwc が指すオブジェクトにその値を格納します.(pwc が空ポインタ (NULL) でない場合のみ)

pwc が空ポインタの場合は n の値を無視し,以下の呼び出しと同じ動作になります.

mbrtowc(NULL, "", 1, ps)

対応するワイド文字ナルワイド文字 (null wide character) のときは変換状態 (conversion state) ps は初期変換状態になります.

mbrtowc 関数の動作はその時点のロケール (locale) の LC_CTYPE カテゴリの影響を受けます.

引数

  • pwc: ワイド文字へのポインタ (変換後のワイド文字が格納されます)
  • s: 変換する多バイト文字
  • n: 変換する多バイト文字の最大バイト長
  • ps: 変換状態

戻り値

  • 次の n 個以下のバイトによってナルワイド文字に対応する多バイト文字が完結する場合: 0 ※1
  • 次の n 個以下のバイトによって正しい多バイト文字が完結する場合: 多バイト文字を完結するバイト数
  • 次の n 個のバイトだけでは多バイト文字が完結せず,n 個のバイトすべてが処理されている場合: (size_t)(-2) ※2
  • 表現形式エラーが発生する場合: (size_t)(-1) ※3

※1: ナルワイド文字を格納します.

※2: 値を格納しません.

※3: errno に EILSEQマクロの値を格納します.また変換状態 ps がどうなるかは未規定です.

Cプログラマの必読書

たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

C実践プログラミング 第3版

C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.