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 :
Pour déterminer la longueur réelle d'une std::string encodée en UTF-8, vous pouvez utiliser l'approche suivante :
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>
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!