char *s s[...],
par incrémentation du pointeurstring
; s[...].s[...].java.lang.String,charAt(...).length() ou string-length(),
ou strlen(), suivant les langages) est-elle le nombre des octets qui la composent,
ou bien celui de ses caractères (p.ex. chinois) ?s[k] (ou par charAt(k))
conduit-il au k-ième octet ou au k-ième caractère (chinois) ?char,
c'est-à-dire une donnée codée sur un octet, interprétée comme un entier
signé). Les string de type « string » sont des chaînes d'éléments de type «
char » [...]
On le voit bien si l'on utilise les différentes "sortes" de caractères
de c++11 (la norme publiée en août 2011).
Dans c++11, on peut déclarer des « wstring » qui sont alors des chaînes de
« wchar_t »,
« wchar_t » étant maintenant un type (et pas comme précédemment défini
par une macro).
Le nombre d'octets occupé par un « wchar_t » n'est pas défini dans le
langage, mais par le compilateur.
On peut fixer le nombre d'octets dans « wide character » par les
nouveaux types char16_t et char32_t
et déclarer des « u16string » et des « u32string », où length = nb d'éléments du type de car. déclaré.
use byte, use utf8, etc, ainsi que la spécification de l'encodage dans les entrées-sorties.mb_strlen($chn, 'UTF-8') donnera la longueur de $chn supposée contenir de l'UTF-8.String (chaînes de char) et la notion de tableau d'octets byte array (byte[]).charAt() de la classe String renvoie un char, et length() donne la longueur en char.char est fondé explicitement sur le plan de base du catalogue Unicode (n°s sur 16 bits).char, en spécifiant que ce type occuperait 16 bits, et n'a pas changé depuis, malgré l'évolution d'Unicode.