Terminateur de chaîne UTF-16

Quelle est la séquence de terminaison de chaîne pour une chaîne UTF-16?

MODIFIER:

Permettez-moi de reformuler la question pour tenter de clarifier. Comment fonctionne l’appel à wcslen() ?

Unicode ne définit pas les terminateurs de chaîne. Votre environnement ou votre langue le fait. Par exemple, les chaînes C utilisent 0x0 comme terminateur de chaîne, les langages .NET n’utilisant pas de terminateur de chaîne: ils définissent une valeur distincte dans la classe Ssortingng pour stocker la longueur de la chaîne.

Pour répondre à votre deuxième question, wcslen recherche un caractère L'\0' wcslen . Ce que je lis , est une longueur de 0x00 octets, selon le compilateur, mais sera probablement la séquence de deux octets 0x00 0x00 si vous utilisez UTF-16 (codage U + 0000, ‘NUL’ )

Il n’y en a pas. Les terminateurs de chaîne ne font pas partie d’un encodage.

Par exemple, si vous aviez la chaîne ab elle serait codée en UTF-16 avec la séquence d’octets suivante: 61 00 62 00 . Et si vous aviez 大家 vous auriez 27-59-B6-5B . Donc, comme vous pouvez voir aucune séquence de terminateur prédéterminée.

7.24.4.6.1 La fonction wcslen (de la norme )

  [#3] The wcslen function returns the number of wide characters that precede the terminating null wide character. 

Et le caractère large nul est L'\0'