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

Comment calculer la longueur réelle d'une chaîne UTF-8 en C ?

Mary-Kate Olsen
Libérer: 2024-10-26 01:26:28
original
618 Les gens l'ont consulté

How to Calculate the Actual Length of a UTF-8 String in C  ?

Comptage de la longueur réelle des chaînes UTF-8

Lorsqu'ils travaillent avec des objets std::string codés en UTF-8, les développeurs rencontrent souvent un écart entre la valeur renvoyée par str.length() et le nombre réel de caractères dans la chaîne. En effet, str.length() compte simplement le nombre d'octets dans la chaîne, sans tenir compte du codage multi-octets utilisé pour représenter les caractères UTF-8.

Le codage UTF-8 définit un ensemble de séquences d'octets. utilisé pour représenter les caractères Unicode. Chaque caractère peut être représenté par un à quatre octets, selon son point de code Unicode. Ces séquences d'octets sont structurées comme suit :

  • Séquence de 1 octet (0x00-0x7F) : Représente directement les caractères ASCII.
  • 2 octets séquence (0x80-0xBF) : Représente les caractères avec des points de code de 0x0080 à 0x07FF.
  • Séquence de 3 octets (0xC0-0xDF) : Représente les caractères avec des points de code de 0x0800 à 0xFFFF.
  • Séquence de 4 octets (0xE0-0xFF) : Représente des caractères avec des points de code de 0x10000 à 0x10FFFF.

Calcul de la longueur réelle

La longueur réelle d'une chaîne codée en UTF-8 peut être déterminée en comptant le nombre de premiers octets de la chaîne, qui sont les octets qui ne correspondent pas au modèle 10xxxxxx. Ce modèle représente les octets de continuation, qui sont utilisés pour représenter des séquences de plusieurs octets.

Extrait de code

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

Dans ce code, la boucle while parcourt la chaîne , en incrémentant la longueur du nombre de len de 1 pour chaque premier octet rencontré.

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!