名前空間
変種
操作

std::mbrtoc8

提供: cppreference.com
< cpp‎ | string‎ | multibyte
ヘッダ <cuchar> で定義
std::size_t mbrtoc8( char8_t* pc8,

                     const char* s,
                     std::size_t n,

                     std::mbstate_t* ps );
(C++20以上)

ナローマルチバイト文字を UTF-8 エンコーディングに変換します。

s がヌルポインタでなければ、次のマルチバイト文字 (あらゆるシフトシーケンスを含む) を完全にするために必要なバイト数を決定するために、 s の指すバイトから始まる最大 n バイトのマルチバイト文字を検査します。 s の次のマルチバイト文字が完全かつ有効であると判断されれば、それを UTF-8 に変換し、その最初の UTF-8 符号単位を *pc8 に格納します (pc8 がヌルでなければ)。

*s のマルチバイト文字の UTF-8 エンコーディングが複数の UTF-8 符号単位から構成される場合は、この関数の最初の呼び出しの後、 mbrtoc8 の次の呼び出しが *s を考慮せずに追加の UTF-8 符号単位を書き出せるような方法で、 *ps が更新されます。

s がヌルポインタの場合は、 n および pc8 の値は無視され、呼び出しは std::mbrtoc8(NULL, "", 1, ps) と同等です。

生成された UTF-8 符号単位が u8'\0' の場合は、変換状態 *ps は初期シフト状態を表します。

この関数が用いるマルチバイトエンコーディングは現在アクティブな C のロケールによって指定されます。

目次

[編集] 引数

pc8 - 結果の UTF-8 符号単位が書き込まれる位置を指すポインタ
s - 入力として使用されるマルチバイト文字列を指すポインタ
n - 検査できる s のバイト数の制限
ps - マルチバイト文字列を解釈するときに使用される変換状態オブジェクトを指すポインタ

[編集] 戻り値

以下のうち適用される最初のもの。

  • s から変換された (そしてヌルでなければ *pc8 に格納された) 文字がヌル文字であった場合は 0
  • s からの変換に成功したマルチバイト文字のバイト数 [1...n]
  • 複数の符号単位から構成される文字から次の UTF-8 符号単位が *pc8 に書き込まれた場合は -3。 この場合、入力からは1バイトも処理されません。
  • 次の n バイトが不完全だけれどもそこまでは有効なマルチバイト文字を構成する場合は -2*pc8 には何も書き込まれません。
  • エンコーディングエラーが発生した場合は -1*pc8 には何も書き込まれず、値 EILSEQerrno に格納され、 *ps の値は未規定になります。

[編集]

[編集] 関連項目

(C++20)
UTF-8 文字列をナローマルチバイトエンコーディングに変換します
(関数) [edit]