トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
| 概要 |
マルチバイト文字のバイト数を調べる。 |
|
| ヘッダ | ||
| 形式 |
size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps); |
|
| 引数 |
s |
対象のマルチバイト文字を指すポインタ。 |
|
n |
調べる最大バイト数。 |
|
|
ps |
変換状態を管理する変数へのポインタ。またはヌルポインタ。 |
|
| 戻り値 |
引数s が指すバイト(引数 s がヌルポインタの場合は ““)から、引数n で指定したバイト数だけを調べ、それがマルチバイト文字として有効なバイト列として完結していれば、マルチバイト文字を構成するバイト数を返す。有効なバイト列でなければ -1 を size_t型にキャスト📘した値を返す。引数s がヌル文字(‘\0’) を指している場合は 0 を返す。 引数n のバイト数分だけではマルチバイト文字として完結しない場合は、-2 を size_t型にキャストした値を返す。この場合、続きのバイトを調べれば有効なマルチバイト文字であるかもしれないし、そうではないかもしれない。 |
|
| 詳細 |
mbstate_t型の引数を持つことを除いて、mblen関数と同じである。mbstate_t型の引数は、変換状態を記憶するためにあり、たとえば、マルチバイト文字を構成する途中のバイトで処理を止めても、その続きから処理を再開することが可能になっている。 バイト列がマルチバイト文字を構成しているものと考え、そのマルチバイト文字が必要としているバイト数を割り出す。調べる範囲は、引数 n で指定したバイト数分だけである。マルチバイト文字が必要とする可能性がある最大バイト数は、ロケールによって異なるので、MB_CUR_MAX の助けを借りることが多い、しかし、mbrlen関数の場合はそれより小さい値を指定し、その結果、マルチバイト文字を構成する途中のバイトで処理が中断されてしまっても、それまでの変換状態が記憶されるため、再開可能である。 引数s がヌルポインタ📘の場合は、引数s として “” が、引数n として 1 が指定されたかのように動作する。 (size_t)-1 が返された場合には、errno に EILSEQ が設定される。 |
|
| 注意 | ||
| 使用例 |
実行結果:
|
|
| 関連 |
再開可能な形ではないが、同じ役割を果たす mblen関数がある。 |
|
| 解説章 | ||
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place 管理者に紹介料が支払われています。
() の前後の空白の空け方)( の直後、) の直前に空白を入れない)return 0; を削除(C言語編全体でのコードの統一)
Programming Place Plus のトップページへ
| はてなブックマーク に保存 | Facebook でシェア | X で ポスト/フォロー |
| LINE で送る | noteで書く |
|
| 管理者情報 | プライバシーポリシー |