Maison > développement back-end > C++ > Comment déterminer avec précision la longueur d'une chaîne codée en UTF-8 en C ?

Comment déterminer avec précision la longueur d'une chaîne codée en UTF-8 en C ?

Barbara Streisand
Libérer: 2024-10-26 05:58:02
original
665 Les gens l'ont consulté

How to Accurately Determine the Length of a UTF-8 Encoded String in C  ?

Détermination de la longueur de la chaîne codée en UTF-8

En C, l'encodage std::string peut varier et l'utilisation de la fonction length() sur une chaîne codée en UTF-8 peut donner une représentation inexacte de sa longueur réelle. Pour déterminer la longueur correcte, considérez les modèles de séquence d'octets suivants :

0x00000000 - 0x0000007F:
       0xxxxxxx

0x00000080 - 0x000007FF:
       110xxxxx 10xxxxxx

0x00000800 - 0x0000FFFF:
       1110xxxx 10xxxxxx 10xxxxxx

0x00010000 - 0x001FFFFF:
       11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Copier après la connexion

Pour calculer la longueur réelle d'une chaîne codée en UTF-8 :

  1. Initialisez une variable len à 0 .
  2. Parcourez la chaîne caractère par caractère.
  3. Pour chaque caractère, vérifiez s'il suit le modèle de séquence d'octets pour un caractère à un octet (0xxxxxxx).
  4. Si c'est le cas, incrémentez len de 1.
  5. Sinon, ignorez les octets actuels et suivants.

L'extrait de code suivant illustre l'implémentation :

<code class="cpp">int len = 0;
const char *s = str.c_str(); // convert to C-style string
while (*s) len += (*s++ & 0xc0) != 0x80;</code>
Copier après la connexion

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!

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