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 :
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>
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!