C で UTF-8 エンコードされた std::string の実際の長さを判断する方法

Linda Hamilton
リリース: 2024-10-27 20:43:30
オリジナル
317 人が閲覧しました

How to Determine the True Length of a UTF-8 Encoded std::string in C  ?

UTF-8 でエンコードされた std::string の実際の長さを決定する

C では、 std::string は次の配列です。文字はそれぞれ 1 バイトのメモリを占有します。ただし、UTF-8 エンコードの場合は、複数バイトのシーケンスを使用して 1 つの文字を表すことができます。これにより、str.length() によって報告される文字列の長さと実際の文字数との間に不一致が生じます。

UTF-8 文字エンコーディング標準に従って、バイトはシーケンスにグループ化されます。シーケンスの長さを示す最初のバイト:

  • 0x00000000 - 0x0000007F: 1 バイト
  • 0x00000080 - 0x000007FF: 2 バイト
  • 0x00000800 - FFFF: 3バイト
  • 0x00010000 - 0x001FFFFF: 4 バイト

UTF-8 でエンコードされた std::string の実際の長さを確認するには、次の方法を使用できます。

  1. *s 演算子を使用して、文字列を 1 文字ずつ繰り返します。
  2. 各文字について、(& 演算子を使用して) 最初のバイトが継続バイト パターン (10xxxxxx) に一致するかどうかを確認します。

最初のバイトが継続パターンと一致しない場合は、長さのカウントをインクリメントします。これは、新しい文字シーケンスの開始を示します。

実装例は次のとおりです。

<code class="c++">int len = 0;
while (*s) len += (*s++ & 0xc0) != 0x80;</code>
ログイン後にコピー

このアプローチに従うことで、UTF-8 でエンコードされた std の実際の長さを正確に決定できます。 :string。文字カウント、文字列操作、データ解析などのさまざまな操作に不可欠です。

以上がC で UTF-8 エンコードされた std::string の実際の長さを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!