Maison > développement back-end > C++ > le corps du texte

Comment déterminer la longueur réelle d'un std::string codé en UTF-8 en C ?

Linda Hamilton
Libérer: 2024-10-27 20:43:30
original
317 Les gens l'ont consulté

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

Détermination de la longueur réelle d'un std::string encodé en UTF-8

En C, un std::string est un tableau de caractères, chacun occupant un octet de mémoire. Cependant, dans le cas du codage UTF-8, un seul caractère peut être représenté à l'aide d'une séquence de plusieurs octets. Cela entraîne un écart entre la longueur de la chaîne indiquée par str.length() et sa longueur réelle en caractères.

Conformément à la norme de codage de caractères UTF-8, les octets sont regroupés en séquences, avec le premier octet indiquant la longueur de la séquence :

  • 0x00000000 - 0x0000007F : 1 octet
  • 0x00000080 - 0x000007FF : 2 octets
  • 0x00000800 - 0x0000FFFF : 3 octets
  • 0x00010000 - 0x001FFFFF : 4 octets

Pour déterminer la longueur réelle d'une std::string encodée en UTF-8, vous pouvez utiliser l'approche suivante :

  1. Parcourez la chaîne caractère par caractère à l'aide de l'opérateur *s.
  2. Pour chaque caractère, vérifiez si le premier octet (à l'aide de l'opérateur &) correspond au modèle d'octet de suite (10xxxxxx).

Si le premier octet ne correspond pas au modèle de continuation, incrémentez le nombre de longueurs. Cela indique le début d'une nouvelle séquence de caractères.

Voici un exemple d'implémentation :

<code class="c++">int len = 0;
while (*s) len += (*s++ & 0xc0) != 0x80;</code>
Copier après la connexion

En suivant cette approche, vous pouvez déterminer avec précision la longueur réelle d'un std encodé en UTF-8 : :string, qui est essentiel pour diverses opérations, telles que le comptage de caractères, la manipulation de chaînes et l'analyse de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!