Condividi tramite


Funzione GetStringTypeW (stringapiset.h)

Nota

Questa API può avere informazioni incomplete/obsolete per determinati caratteri Unicode, in particolare quelle nell'intervallo supplementare. Per informazioni sul tipo di carattere Unicode più accurate e complete, è consigliabile usare API ICU equivalenti, ad esempio u_charType, u_islower, u_isspacee u_ispunct. Per indicazioni sull'uso delle API di ICU in Windows, vedere Introduzione all'ICU in Windows.

Recupera informazioni sul tipo di carattere per i caratteri nella stringa di origine Unicode specificata. Per ogni carattere nella stringa, la funzione imposta uno o più bit nell'elemento a 16 bit corrispondente della matrice di output. Ogni bit identifica un tipo di carattere specifico, ad esempio lettera, cifra o nessuno dei due.

Attenzione L'uso della funzione GetStringTypeW può compromettere erroneamente la sicurezza dell'applicazione. Per evitare un overflow del buffer, l'applicazione deve impostare correttamente le dimensioni del buffer di output. Per altre informazioni sulla sicurezza, vedere Considerazioni sulla sicurezza: Interfaccia utente di Windows.

 

Sintassi

BOOL GetStringTypeW(
  [in]  DWORD                         dwInfoType,
  [in]  _In_NLS_string_(cchSrc)LPCWCH lpSrcStr,
  [in]  int                           cchSrc,
  [out] LPWORD                        lpCharType
);

Parametri

[in] dwInfoType

Flag che specificano le informazioni sul tipo di carattere da recuperare. Questo parametro può avere i valori seguenti. I tipi di carattere sono suddivisi in livelli diversi, come descritto nella sezione Osservazioni.

Bandiera Significato
CT_CTYPE1
Recuperare informazioni sul tipo di carattere.
CT_CTYPE2
Recuperare informazioni sul layout bidirezionale.
CT_CTYPE3
Recuperare le informazioni sull'elaborazione del testo.

[in] lpSrcStr

Puntatore alla stringa Unicode per cui recuperare i tipi di caratteri. Si presuppone che la stringa sia con terminazione Null se cchSrc è impostato su qualsiasi valore negativo.

[in] cchSrc

Dimensioni, in caratteri, della stringa indicata da lpSrcStr. Se la dimensione include un carattere Null di terminazione, la funzione recupera le informazioni sul tipo di carattere per tale carattere. Se l'applicazione imposta le dimensioni su un numero intero negativo, si presuppone che la stringa di origine sia con terminazione Null e la funzione calcola automaticamente le dimensioni con un carattere aggiuntivo per la terminazione Null.

[out] lpCharType

Puntatore a una matrice di valori a 16 bit. La lunghezza di questa matrice deve essere sufficientemente grande per ricevere un valore a 16 bit per ogni carattere nella stringa di origine. Se cchSrc non è un numero negativo, lpCharType deve essere una matrice di parole con elementi cchSrc. Se cchSrc è impostato su un numero negativo, lpCharType è una matrice di parole con lpSrcStr + 1 elementi. Quando la funzione viene restituita, questa matrice contiene una parola corrispondente a ogni carattere nella stringa di origine.

Valore restituito

Restituisce un valore diverso da zero se ha esito positivo o 0 in caso contrario. Per ottenere informazioni estese sull'errore, l'applicazione può chiamare GetLastError, che può restituire uno dei codici di errore seguenti:

  • ERROR_INVALID_FLAGS. I valori specificati per i flag non sono validi.
  • ERROR_INVALID_PARAMETER. Uno dei valori dei parametri non è valido.

Osservazioni

Per una panoramica dell'uso delle funzioni stringa, vedere Stringhe.

I valori dei parametri lpSrcStr e lpCharType non devono essere uguali. Se sono uguali, la funzione ha esito negativo con ERROR_INVALID_PARAMETER.

Il parametro impostazioni locali utilizzato dalla funzione GetStringTypeA corrispondente non viene usato da questa funzione. A causa della differenza di parametro, un'applicazione non può richiamare automaticamente la versione ANSI o Unicode appropriata di un GetStringType* funzione tramite l'uso dell'opzione UNICODE #define. Un'applicazione può aggirare questa limitazione usando GetStringTypeEx, che è la funzione consigliata.

tipi di caratteri supportati

I bit del tipo di carattere sono divisi in diversi livelli. Le informazioni per un livello possono essere recuperate da una singola chiamata a questa funzione. Ogni livello è limitato a 16 bit di informazioni in modo che le altre funzioni di mapping, limitate a 16 bit di rappresentazione per carattere, possano restituire informazioni sul tipo di carattere.

Ctype 1

Questi tipi supportano funzioni di digitazione di caratteri ANSI C e POSIX (LC_CTYPE). Un OR bit per bit di questi valori viene recuperato nella matrice nel buffer di output quando dwInfoType è impostato su CT_CTYPE1. Per le impostazioni locali DBCS, gli attributi di tipo si applicano sia ai caratteri stretti che ai caratteri wide. I caratteri hiragana e katakana giapponesi e i caratteri kanji ideograph hanno tutti l'attributo C1_ALPHA.

Nome Valore Significato
C1_UPPER 0x0001 Maiuscolo
C1_LOWER 0x0002 Minuscolo
C1_DIGIT 0x0004 Cifre decimali
C1_SPACE 0x0008 Spaziatura
C1_PUNCT 0x0010 Punteggiatura
C1_CNTRL 0x0020 Caratteri di controllo
C1_BLANK 0x0040 Caratteri vuoti
C1_XDIGIT 0x0080 Cifre esadecimali
C1_ALPHA 0x0100 Qualsiasi carattere linguistico: alfabetico, sillabario o ideografico
C1_DEFINED 0x0200 Carattere definito, ma non uno degli altri tipi di C1_*
 

I tipi di caratteri seguenti sono costanti o calcolabili dai tipi di base e non devono essere supportati da questa funzione.

Digitare Descrizione
Alfanumerico Caratteri alfabetici e cifre (C1_ALPHA e C1_DIGIT)
Stampabile Caratteri grafici e spazi vuoti (tutti i tipi C1_* ad eccezione di C1_CNTRL)
 

Ctype 2

Questi tipi supportano il layout corretto del testo Unicode. Per le impostazioni locali DBCS, il tipo di carattere si applica sia ai caratteri stretti che a caratteri wide. Gli attributi di direzione vengono assegnati in modo che l'algoritmo di layout bidirezionale standardizzato da Unicode produa risultati accurati. Questi tipi si escludono a vicenda. Per altre informazioni sull'uso di questi attributi, vedere The Unicode Standard.

Nome Valore Significato
Forte
C2_LEFTTORIGHT 0x0001 Da sinistra a destra
C2_RIGHTTOLEFT 0x0002 Da destra a sinistra
Debole
C2_EUROPENUMBER 0x0003 Numero europeo, cifra europea
C2_EUROPESEPARATOR 0x0004 Separatore numerico europeo
C2_EUROPETERMINATOR 0x0005 Terminatore numerico europeo
C2_ARABICNUMBER 0x0006 Numero arabo
C2_COMMONSEPARATOR 0x0007 Separatore numerico comune
Neutrale
C2_BLOCKSEPARATOR 0x0008 Separatore di blocco
C2_SEGMENTSEPARATOR 0x0009 Separatore segmento
C2_WHITESPACE 0x000A Spazi vuoti
C2_OTHERNEUTRAL 0x000B Altri neutrali
Non applicabile
C2_NOTAPPLICABLE 0x0000 Nessuna direzionalità implicita (ad esempio, codici di controllo)
 

Ctype 3

Questi tipi devono essere segnaposto per le estensioni ai tipi POSIX necessari per l'elaborazione di testo generale o per le funzioni della libreria C standard. Un OR bit per bit di questi valori viene recuperato quando dwInfoType è impostato su CT_CTYPE3. Per le impostazioni locali DBCS, gli attributi Ctype 3 si applicano sia ai caratteri stretti che ai caratteri wide. I caratteri hiragana e katakana giapponesi e i caratteri kanji ideograph hanno tutti l'attributo C3_ALPHA.

Nome Valore Significato
C3_NONSPACING 0x0001 Contrassegno senza spaziatura
C3_DIACRITIC 0x0002 Segni diacritici non dispacing
C3_VOWELMARK 0x0004 Mark di vocali nonpacing
C3_SYMBOL 0x0008 Simbolo
C3_KATAKANA 0x0010 Carattere Katakana
C3_HIRAGANA 0x0020 Carattere Hiragana
C3_HALFWIDTH 0x0040 Carattere a metà larghezza (stretto)
C3_FULLWIDTH 0x0080 Carattere a larghezza intera (wide)
C3_IDEOGRAPH 0x0100 Carattere Ideografico
C3_KASHIDA 0x0200 Carattere kashida arabo
C3_LEXICAL 0x0400 Punteggiatura che viene conteggiata come parte della parola (kashida, trattino, indicatori ordinali femminili/maschile, segno di uguale e così via)
C3_ALPHA 0x8000 Tutti i caratteri linguistici (alfabetico, sillabario e ideografico)
C3_HIGHSURROGATE 0x0800 Windows Vista: unità di codice surrogato elevato
C3_LOWSURROGATE 0x1000 Windows Vista: unità di codice surrogato basso
Non applicabile
C3_NOTAPPLICABLE 0x0000 Non applicabile
 

C3_HIGHSURROGATE e C3_LOWSURROGATE sono elencati solo per completezza e non devono mai essere forniti a questa funzione. Sono rilevanti solo per Unicode.

A partire da Windows 8: GetStringTypeW è dichiarato in Stringapiset.h. Prima di Windows 8, è stato dichiarato in Winnls.h.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [app desktop | App UWP]
server minimo supportato Windows 2000 Server [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione stringapiset.h (include Windows.h)
libreria Kernel32.lib
dll Kernel32.dll

Vedere anche

GetStringTypeA

GetStringTypeEx

supporto linguistico nazionale

funzioni di supporto del linguaggio nazionale