TCHAR funzioni di sicurezza - parametro conteggio per UTF-8 costanti
Domanda
sto porting una libreria da char a TCHAR. il parametro di conteggio di questo frammento, secondo MSDN, è il numero di caratteri più byte, non il numero di byte. così, ho ottenuto questo diritto? Le mie proprietà del progetto in parola VC9 'set di caratteri unicode uso' e penso che sia corretto, ma io non sono come il mio che gli impatti parametro count.
_tcsncmp(access, TEXT("ftp"), 3); //or do i want _tcsnccmp?
"supportate su piattaforme Windows solo, _mbsncmp e _mbsnbcmp sono versioni più byte di strncmp. _Mbsncmp confronterà al massimo caratteri conteggio multibyte e _mbsnbcmp confronterà al massimo numero di byte. Entrambi utilizzare la tabella codici multibyte corrente.
_tcsnccmp e _tcsncmp sono le corrispondenti funzioni generiche per _mbsncmp e _mbsnbcmp, rispettivamente. _tccmp è equivalente a _tcsnccmp ".
Una domanda simile è _tcslen vs _tcsclen.
Soluzione
Sì, lo fanno bene.
La questione, tuttavia, è per questo che ti porta a TCHAR -. Qualcosa che è sensibile alle _UNICODE definire
Perché non usare UTF8 e char *?
Altri suggerimenti
TCHAR
è un tipo che è o 8 o 16 bit a seconda che _UNICODE
è definito. Ma UTF-8 sempre utilizza unità di codice a 8 bit, in modo da utilizzare TCHAR
è sciocco. Proprio l'uso char
.
TCHAR
è legata all'esistenza di due versioni di API di Windows: funzioni "A" che le pagine utilizzare il codice legacy a 8 bit, e "W" Funzioni che utilizzano UTF-16. UTF-8 non è supportato . È possibile utilizzare UTF-8 su Windows mediante la conversione in modo esplicito i tuoi stringhe UTF-8 a UTF-16 per le chiamate API, ma non sarà possibile ottenere alcun aiuto da _UNICODE
o TCHAR
.