トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 |
マルチバイト文字をワイド文字に変換する。 |
|
ヘッダ |
||
形式 |
size_t mbrtowc(wchar_t* restrict ws, const char* restrict s, size_t n, mbstate_t* restrict ps); |
|
引数 |
ws |
変換結果を受け取るメモリアドレス。受け取らない場合はヌルポインタでも良い。 |
s |
変換対象のマルチバイト文字列。 |
|
n |
変換する最大バイト数。 |
|
ps |
変換状態を管理するオブジェクトへのポインタ。またはヌルポインタ。 |
|
戻り値 |
引数s が指すバイトから、引数n で指定したバイト数だけを調べ、それがマルチバイト文字として有効なバイト列であれば、マルチバイト文字を構成するバイト数を返す。それがヌル文字ならば 0 を返す。 マルチバイト文字として有効なバイト列でなければ、-1 を size_t型にキャストした値が返される。 有効なバイト列ではあるが、1つのマルチバイト文字として完結しなかった場合には、-2 を size_t型にキャストした値が返される。 |
|
詳細 |
mbstate_t型の引数が追加されていることを除けば、mbtowc関数と同じことを行う関数である。戻り値の内容は異なる。 引数ps は、マルチバイト文字の並びの現時点までの変換状態を管理しているオブジェクトを指す。引数ps をヌルポインタとした場合は、この関数が内部で持っている mbstate_t オブジェクトを使う。これは、プログラム開始時点で適切に初期化されている。 引数s がヌルポインタの場合、 バイト列がマルチバイト文字を構成しているものと考え、引数 n で指定したバイト数分だけ調べる。マルチバイト文字が必要とする可能性がある最大バイト数は、ロケールによって異なるので、引数n には MB_CUR_MAX を指定することが多い。調べた範囲が、有効なマルチバイト文字を構成していれば、それに対応するワイド文字の値を決定し、その値を引数ws で指定した位置へ格納する。引数ws がヌルポインタの場合は格納せず処理を終える。 マルチバイト文字を構成するバイト列が無効であるとき、表現形式エラーが発生し、errno に EILSEQ が格納される。 この関数は、ロケールの LC_CTYPEカテゴリの影響を受ける。 |
|
注意 |
あくまで文字の変換なので、末尾に終端文字(L’\0’) は付加されない。 |
|
使用例 |
実行結果:
|
|
関連 |
mbstate_t型の引数を伴わない mbtowc関数がある。 |
|
解説章 |
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place
管理者に紹介料が支払われています。
()
の前後の空白の空け方)(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)使用例で、mbrtowc関数の戻り値を int型にキャストして受け取るように修正。戻り値が負数を size_t型にキャストした値の場合に、誤った処理を実行していた。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |