Maison >développement back-end >C++ >Comment déterminer la longueur réelle des chaînes codées en UTF-8 en C ?
Détermination de la longueur réelle des chaînes codées en UTF-8 en C
UTF-8 est un schéma de codage de caractères à largeur variable, ce qui signifie que la longueur d'une chaîne en octets ne correspond pas forcément au nombre de caractères qu'elle contient. Cela peut poser un problème lorsque vous travaillez avec des chaînes UTF-8 en C, car la méthode str.length() renvoie le nombre d'octets dans la chaîne, et non le nombre de caractères.
Pour déterminer avec précision la longueur de une chaîne codée en UTF-8 en C , vous pouvez utiliser l'approche suivante :
Comptez le nombre de premiers octets dans la chaîne. Les premiers octets sont des octets qui ne correspondent pas à 10xxxxxx, car ces octets indiquent le début de séquences de caractères multi-octets.
Voici un exemple d'implémentation :
<code class="cpp">int len = 0; while (*s) len += (*s++ & 0xc0) != 0x80;</code>
Dans ce code, le Le pointeur s parcourt la chaîne et l'opération & 0xc0 masque les deux premiers bits de chaque octet. Si les deux premiers bits sont 0b10 (indiquant un octet de continuation), le compte n'est pas incrémenté. Sinon, il est incrémenté et le pointeur avance jusqu'à l'octet suivant. Ce processus se poursuit jusqu'à ce que la fin de la chaîne soit atteinte, moment auquel len contiendra la longueur réelle des caractères de la chaîne.
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!