std::mbrtoc8
From cppreference.com
| ヘッダー <cuchar> で定義 |
||
| std::size_t mbrtoc8( char8_t* pc8, const char* s, |
(C++20以降) | |
狭いマルチバイト文字をUTF-8エンコーディングに変換します。
sがnullポインタでない場合、次のマルチバイト文字を完成させるために必要なバイト数(シフトシーケンスを含む)を決定するために、sが指すバイトから始まるマルチバイト文字列の最大nバイトを検査します。関数がs内の次のマルチバイト文字が完全で有効であると判断した場合、それをUTF-8に変換し、最初のUTF-8コードユニットを*pc8に格納します(pc8がnullでない場合)。
*s内のマルチバイト文字のUTF-8エンコーディングが複数のUTF-8コードユニットで構成されている場合、この関数の最初の呼び出しの後、*psは、*sを考慮せずに、mbrtoc8の次の呼び出しで追加のUTF-8コードユニットが出力されるように更新されます。
sがnullポインタの場合、nとpc8の値は無視され、呼び出しはstd::mbrtoc8(nullptr, "", 1, ps)と同等です。
生成されたUTF-8コードユニットがu8'\0'である場合、変換状態*psは初期シフト状態を表します。
この関数が使用するマルチバイトエンコーディングは、現在アクティブなCロケールによって指定されます。
目次 |
[編集] パラメータ
| pc8 | - | 結果のUTF-8コードユニットが書き込まれる場所へのポインタ |
| s | - | 入力として使用されるマルチバイト文字列へのポインタ |
| n | - | 検査できるs内のバイト数の制限 |
| ps | - | マルチバイト文字列を解釈する際に使用される変換状態オブジェクトへのポインタ |
[編集] 戻り値
以下が適用される場合、最初のもの
- 0: sから変換された文字(およびnullでない場合は*pc8に格納された文字)がnull文字であった場合。
- sから正常に変換されたマルチバイト文字のバイト数[1...n]。
- static_cast<std::size_t>(-3): エンコーディングが複数のコードユニットで構成される文字の次のUTF-8コードユニットが*pc8に書き込まれた場合。この場合、入力からバイトは処理されません。
- static_cast<std::size_t>(-2): 次のnバイトが不完全だがこれまでのところ有効なマルチバイト文字を構成する場合。何も*pc8に書き込まれません。
- static_cast<std::size_t>(-1): エンコーディングエラーが発生した場合。何も*pc8に書き込まれず、値EILSEQがerrnoに格納され、*psの値は未指定です。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連項目
| (C++20) |
UTF-8文字列をナローマルチバイトエンコーディングに変換する (関数) |
| (C++11) |
ナローマルチバイト文字をUTF-16エンコーディングに変換する (関数) |
| mbrtoc8のCドキュメント
| |