UTF-8 でエンコードされた std::string の実際の長さを決定する
C では、 std::string は次の配列です。文字はそれぞれ 1 バイトのメモリを占有します。ただし、UTF-8 エンコードの場合は、複数バイトのシーケンスを使用して 1 つの文字を表すことができます。これにより、str.length() によって報告される文字列の長さと実際の文字数との間に不一致が生じます。
UTF-8 文字エンコーディング標準に従って、バイトはシーケンスにグループ化されます。シーケンスの長さを示す最初のバイト:
UTF-8 でエンコードされた std::string の実際の長さを確認するには、次の方法を使用できます。
最初のバイトが継続パターンと一致しない場合は、長さのカウントをインクリメントします。これは、新しい文字シーケンスの開始を示します。
実装例は次のとおりです。
<code class="c++">int len = 0; while (*s) len += (*s++ & 0xc0) != 0x80;</code>
このアプローチに従うことで、UTF-8 でエンコードされた std の実際の長さを正確に決定できます。 :string。文字カウント、文字列操作、データ解析などのさまざまな操作に不可欠です。
以上がC で UTF-8 エンコードされた std::string の実際の長さを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。