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.

È stato utile?

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.

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