Como calcular o comprimento de uma sequência UCS-2 e seu tamanho em C ++?
Pergunta
Eu tenho uma corda em UCS-2 codificação. Preciso copiar esta string para outra string ucs-2. Antes de copiar, preciso calcular o comprimento de uma sequência UCS-2 para alocação de memesia.
Como calcular o comprimento de uma sequência UCS-2?
Solução
O UCS2 não possui informações sobre o comprimento da corda. Sua representação original de string é 0 terminada; nesse caso, você pode verificar se há uma unidade de código 0 (ou seja, um valor de 16 bits 0), ou não é terminado, nesse caso, você precisa de alguns Informações da banda sobre o comprimento da string (como um tamanho de buffer armazenado separadamente).
Em geral, o UCS 2 é um subconjunto de UTF-16 (http://www.unicode.org/faq/basic_q.html#14). Portanto, você deve ficar bem com as ferramentas UTF-16, como a biblioteca da UTI http://site.icu-project.org/.
Outras dicas
Isso depende do tipo de string que você está usando. Se não houver tipo (apenas um buffer de memória conhecido por conter uma string na codificação UCS-2), você deve saber como ela foi representada. Pode ter uma contagem de comprimento pré-adolescente ou ter 0 terminado como antigo simples char *
"C Strings".