Condividi tramite


Specifica la lunghezza della stringa di testo di output

Diverse funzioni di tipo di carattere e output di testo hanno un parametro che specifica la lunghezza della stringa di output di testo. Un esempio tipico è il parametro cchText di DrawTextEx.

Ognuna di queste funzioni ha una versione "ANSI" e una versione Unicode (ad esempio, rispettivamente DrawTextExA e DrawTextExW). Per la versione "ANSI" di ogni funzione, la lunghezza viene specificata come conteggio BYTE e per la funzione Unicode viene specificata come conteggio di WORD.

È comune pensare a questo come a un "conteggio dei caratteri". Ciò è generalmente accurato per molte lingue, incluso l'inglese, ma non è accurato in generale. Nelle stringhe "ANSI", i caratteri nelle tabelle di codici SBCS occupano un byte ciascuno, ma la maggior parte dei caratteri nelle tabelle di codici DBCS occupano due byte. Analogamente, la maggior parte dei caratteri Unicode attualmente definiti si trova nel piano multilingue di base (BMP) e le relative rappresentazioni UTF-16 rientrano in un'unica parola, ma i caratteri supplementari sono rappresentati in Unicode da ''surrogati', che richiedono due WORD.

Ognuna di queste funzioni accetta un conteggio di lunghezza. Per la versione "ANSI" di ogni funzione, la lunghezza viene specificata come lunghezza del conteggio BYTE di una stringa non inclusa la NULL terminatore. Per la funzione Unicode, il conteggio delle lunghezze è il conteggio dei byte diviso per sizeof(WCHAR), che è 2, non incluso il NULL terminatore. Il numero di caratteri è il conteggio del numero di caratteri, che potrebbe non essere uguale al numero di lunghezze della stringa. In alcuni casi, i caratteri richiedono più di un byte per ANSI (ad esempio, caratteri DBCS ) e più di una parola per Unicode (come caratteri surrogati). Inoltre, il numero di glifi potrebbe non essere uguale al numero di caratteri perché più caratteri potrebbero essere compositi per creare un glifo. La lunghezza è conteggiata come quantità di dati. Il numero di caratteri è il numero di unità elaborate come un'entità. I glifi sono ciò che viene visualizzato. Ad esempio, in Unicode, è possibile avere una stringa con lunghezza pari a 3, ovvero 2 caratteri e che comporta il rendering di 1 glifo. Tuttavia, in genere, per la maggior parte delle stringhe Unicode, la lunghezza, il numero di caratteri e il numero di glifi renderizzati sono uguali.

È possibile usare _tcslen() per ottenere la lunghezza della stringa. Per ANSI, _tcslen() restituisce il numero di byte. Per Unicode, _tcslen() restituisce il numero di WCHAR( ovvero WORD).

I caratteri di elaborazione speciali come tabulazioni e trattini morbidi che non vengono sempre disegnati possono influire sull'output disegnato. Vengono inclusi nella lunghezza della stringa e nei conteggi dei caratteri, ma potrebbero non essere rappresentati direttamente da un glifo di cui è stato eseguito il rendering.

Alcune di queste funzioni consentono al chiamante di specificare la lunghezza come -1 per indicare che la stringa è con terminazione Null; in tal caso, la funzione calcola automaticamente il conteggio dei caratteri. Non tutte le funzioni offrono questa funzionalità. Specificato in base alla funzione; vedere la documentazione relativa alle singole funzioni.