Come calcolare la lunghezza di una stringa UCS-2 e la sua dimensione in C ++?
Domanda
Come calcolare la lunghezza di una stringa UCS-2?
Soluzione
UCS2 non trasporta informazioni sulla lunghezza della stringa stessa. La vostra rappresentazione della stringa originale o è 0-terminato, nel qual caso si può solo verificare la presenza di un'unità di codice 0 (cioè un valore a 16 bit 0), o non è 0-terminato, nel qual caso avete bisogno di qualche out-of band informazioni circa la lunghezza della stringa (ad esempio una dimensione di buffer immagazzinate separatamente).
In generale, UCS 2 è un sottoinsieme di UTF-16 ( http: // www.unicode.org/faq/basic_q.html#14 ). Quindi, si dovrebbe andare bene con UTF-16 strumenti, come la libreria ICU http: //site.icu- project.org/ .
Altri suggerimenti
Dipende dal tipo di stringa che si sta utilizzando. Se non v'è nessun tipo (solo un buffer di memoria noto per contenere una stringa in UCS-2 codifica), è necessario sapere come è stata rappresentata. Si potrebbe avere un conteggio di lunghezza anteporre, o essere 0-terminato proprio come Plain Old char *
"stringhe C".