Uint32 SDL_StepUTF8(const char **pstr, size_t *pslen);
| const char ** | pstr | 読み込み後に変更されるUTF-8文字列へのポインタへのポインタ |
| size_t * | pslen | 読み込み後に変更される文字列のバイト長へのポインタへのポインタ. NULLも可 |
(Uint32) 文字列の先頭のUnicodeコードポイントを戻す.
この関数は, *pstrが示すUTF-8文字列の先頭のUnicodeコードポイントを戻し, その後に戻した文字の分だけ*pstrを進める.
*pslenバイトを超える文字列にアクセスすることはない.
*pslenは消費したバイトだけ減算される.
pslenはNULLでもよい. その場合, 文字列の終端にはNULが必要で, この関数はNUL文字が見つかるまで処理を進める.
*pslenが0の場合, 文字列の終端に達したとみなし, 文字列バッファの内容に関わらず0コードポイントを戻す.
コードポイント0(NUL終端)に達した, または*pslenが0の場合, *pstrと*pslenは進まない.
一般的には, この関数はループ内で0が戻るまで呼び出し, 繰り返しのたびに引数が設定される.
無効なUTF-8シーケンスに遭遇した場合, この関数はSDL_INVALID_UNICODE_CODEPOINTを戻し, 文字列/バイト長を1バイト進める(言い換えると, マルチバイトシーケンスは次の有効なUTF-8シーケンスと同期できるまで複数のSDL_INVALID_UNICODE_CODEPOINTを戻すことがありうる).
無効なUTF-8シーケンスは, 冗長なエンコード, UTF-16サロゲート値の使用, データの切り詰めなどで起こりうる. 詳細はRFC3629を参照すること.
この関数はどのスレッドからも安全に呼べる.