C での UTF-8 エンコード文字列の実際の長さの決定
UTF-8 は可変幅の文字エンコード スキームであり、文字列のバイト単位の長さは、その文字列に含まれる文字数と必ずしも一致しないということです。 str.length() メソッドは文字数ではなく文字列内のバイト数を返すため、C で UTF-8 文字列を扱う場合、これが問題になる可能性があります。
文字列の長さを正確に判断するにはC で UTF-8 でエンコードされた文字列を使用する場合は、次のアプローチを使用できます。
文字列内の最初のバイトの数をカウントします。最初のバイトは、マルチバイト文字シーケンスの開始を示すため、10xxxxxx に一致しないバイトです。
実装例を次に示します。
<code class="cpp">int len = 0; while (*s) len += (*s++ & 0xc0) != 0x80;</code>
このコードでは、 ■ ポインタは文字列を反復処理し、& 0xc0 操作は各バイトの最初の 2 ビットをマスクします。最初の 2 ビットが 0b10 (継続バイトを示す) の場合、カウントはインクリメントされません。それ以外の場合はインクリメントされ、ポインタは次のバイトに進みます。このプロセスは文字列の終わりに達するまで続き、その時点で len には文字列の実際の文字長が含まれます。
以上がC で UTF-8 でエンコードされた文字列の実際の長さを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。