Domanda

Sto cercando di usare la terapia intensiva per l'elaborazione delle stringhe unicode in un modulo nodo.js nativo perché me lo sembra v8::String (secondo Questi documenti) non ha un'API C ++ per questo scopo.

Per quanto ne sappia V8 si aspetta UTF-16 in ExternalStringResource e altre API, quindi vorrei usare l'ICU per l'elaborazione UTF-16.
Devo in particolare:

  • Iterare sui caratteri (non solo le unità di codice a 16 bit) di una stringa UTF-16
  • Dì il numero di caratteri (non solo le unità di codice a 16 bit) che contiene una stringa UTF-16

Così ho guardato la documentazione in terapia intensiva e ho trovato il UnicodeString e CharacterIterator classi. Tuttavia, UnicodeString non ha un fromUTF16 metodo, solo fromUTF8 e fromUTF32.

L'altra cosa di cui non sono sicuro è, fa il UnicodeString costruttore copiare i dati che gli fornisco o no? Id Preferisci molto Per utilizzare un approccio a copia zero in cui lavorerei solo con un oggetto immutabile in modo che non dovrebbe eseguire alcuna operazione di copia, usa semplicemente il buffer che lo punta.

Non sono anche sicuro se posso solo usare UCharIterator (Supponendo che posso convertire in qualche modo UChar* dalle mie stringhe UTF-16).

Quindi la mia domanda è: Come posso usare la terapia intensiva per gli scopi di cui sopra?

Grazie in anticipo per le tue risposte!

È stato utile?

Soluzione

UnicodeString Utilizza UTF-16 per l'archiviazione per impostazione predefinita. Ecco perché ha solo fromUTF8 e fromUTF32: da UTF-16 non c'è conversione da effettuare.

Copia i dati. È una stringa di proprietà, molto simile std::string.

Puoi usare UCharIterator Se non si desidera copiare i dati. UChar è un valore a 16 bit. Puoi costringerlo ad essere qualsiasi tipo a 16 bit con cui preferisci lavorare definendo il UCHAR_TYPE Macro:

Definire uchar essere uchar_type, se questo è #defined (ad esempio, a char16_t) o wchar_t se è largo 16 bit; SEMPRE ipotizzato di essere non firmato.

Se nessuno dei due è disponibile, definire uchar da essere uint16_t.

Ciò rende la definizione di dipendente dalla piattaforma UCHAR ma consente la compatibilità del tipo di stringa diretta con piattaforme con tipi WCHAR_T a 16 bit.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top