Comment calculer la longueur d'une chaîne UCS-2 et sa taille en C ++?
Question
J'ai une chaîne dans UCS-2 encodage . Je dois copier cette chaîne à une autre chaîne UCS-2. Avant de copier je dois calculer la longueur d'une chaîne UCS-2 pour l'allocation memeory.
Comment calculer la longueur d'une chaîne UCS-2?
La solution
UCS2 ne porte pas d'informations sur la longueur de chaîne elle-même. Votre représentation de chaîne d'origine est soit 0 TERMINAISON, auquel cas vous pouvez simplement vérifier un 0 unité de code (une 0 valeur 16 bits), ou il est 0 terminé, auquel cas vous avez besoin d'out-of informations de bande de la longueur de la chaîne (par exemple une taille de mémoire tampon stockée séparément).
En général, UCS 2 est un sous-ensemble de codage UTF-16 ( http: // www.unicode.org/faq/basic_q.html#14 ). Par conséquent, vous devriez être bien avec des outils UTF-16, comme la bibliothèque de soins intensifs http: //site.icu- project.org/ .
Autres conseils
Cela dépend du type de chaîne que vous utilisez. S'il n'y a pas de type (juste un tampon de mémoire connu pour contenir une chaîne dans le codage UCS-2), vous devez savoir comment il était représenté. Il pourrait avoir un compte de longueur Prepended, ou être 0-fin comme au bon vieux char *
simples « chaînes C ».