Wie Länge eines UCS-2-String und seine Größe in C ++ berechnen?
Frage
Ich habe eine Zeichenfolge in UCS-2 Codierung. Ich brauche diese Zeichenfolge an einem anderen UCS-2-Zeichenfolge zu kopieren. Vor dem Kopieren Ich brauche die Länge eines UCS-2-String für memeory Zuordnung zu berechnen.
Wie berechnet Länge eines UCS-2-String?
Lösung
UCS2 führt keine Informationen über Stringlänge selbst. Ihre ursprüngliche String-Darstellung entweder 0-terminiert, wobei in diesem Fall können Sie einfach prüfen, ob eine 0 Codeeinheit (dh ein 16-Bit-Wert 0), oder es ist nicht 0-terminierte, in diesem Fall müssen Sie einig out-of- Band Informationen über die Länge der Saite (wie eine separat gespeicherten Puffergröße).
Im Allgemeinen UCS 2 ist eine Teilmenge von UTF-16 ( http: // www.unicode.org/faq/basic_q.html#14 ). Daher sollten Sie sich gut mit UTF-16-Tool, wie zum Beispiel der ICU-Bibliothek seines http: //site.icu- project.org/ .
Andere Tipps
Das hängt von dem String-Typ Sie verwenden. Wenn es kein Typ (nur ein Speicherpuffer bekannt, eine Zeichenfolge in UCS-2-Codierung enthält) ist, müssen Sie wissen, wie es dargestellt wurde. Es könnte eine vorangestellte Länge Anzahl hat, oder seine 0-terminiert wie plain old char *
"C-Strings".