トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 |
char16_t型の文字をマルチバイト文字列に変換する。 |
|
ヘッダ |
||
形式 |
size_t c16rtomb(char* s, char16_t c16, mbstate_t* ps); |
|
引数 |
s |
変換結果を受け取るメモリアドレス。最低でも MB_CUR_MAX以上の要素数が必要。 |
c16 |
変換対象の char16_t型の文字。 |
|
ps |
変換状態を管理するオブジェクトへのポインタ。またはヌルポインタ。 |
|
戻り値 |
引数c16 がマルチバイト文字に変換可能であれば、引数s が指す先へ格納されたマルチバイト文字のバイト数を返す。変換可能でなければ -1 を size_t型にキャストした値を返す。 返される大きさはつねに、MB_CUR_MAX 以下である。 |
|
詳細 |
引数ps は、マルチバイト文字の並びの現時点までの変換状態を管理しているオブジェクトを指す。引数ps をヌルポインタとした場合は、この関数が内部で持っている mbstate_t オブジェクトを使う。これは、プログラム開始時点で適切に初期化されている。 引数s
がヌルポインタの場合、 char16_t型の文字を、対応するマルチバイト文字のバイト列へ変換する。文字数としては、いずれにしても1文字であるが、マルチバイト文字としては何バイト必要とするか分からないので、char型の配列で受け取る。 引数w にヌル文字を指定した場合、mbstate_t オブジェクトの変換状態が初期状態に戻される。 変換結果が正しいマルチバイト文字列にならない場合、表現形式エラーが発生し、errno に EILSEQ が格納される。 この関数は、ロケールの LC_CTYPE カテゴリの影響を受ける。 |
|
注意 |
あくまで文字の変換なので、末尾に終端文字(u’\0’) は付加されない。 Visual Studio 2017 で確認すると、ネイティブロケールではマルチバイト文字のエンコーディングエラーは Shift_JIS (CP932) であるが、その状態でこの関数を呼び出しても、変換結果は UTF-8 になるようである。 |
|
使用例 |
実行結果:
|
|
関連 | 逆方向の変換であるマルチバイト文字から char16_t型の文字への変換は、mbrtoc16関数で行える。 | |
解説章 |
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place
管理者に紹介料が支払われています。
()
の前後の空白の空け方)(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)VisualStudio 2015 の対応終了。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |