Pregunta

Estoy portando una biblioteca de Char a Tchar. El parámetro de conteo de este fragmento, según MSDN, es el número de caracteres multibyte, no el número de bytes. Entonces, ¿entendí esto bien? Las propiedades de mi proyecto en VC9 dicen 'Usar un conjunto de caracteres Unicode' y creo que eso es correcto, pero no soy como eso afecta mi parámetro de conteo.

_tcsncmp(access, TEXT("ftp"), 3); //or do i want _tcsnccmp?

"Apoyado solo en las plataformas de Windows, _MBSNCMP y _MBSNBCMP son versiones multibyte de STRNCMP. _MBSNCMP se compararán en la mayoría de los caracteres multibites de conteo y _MBSNBCMP se compararán en la mayoría de los bytes. Ambos usan la página de códigos multibyte actual.

_tcsnccmp y _tcsncmp son las funciones genéricas correspondientes para _MBSNCMP y _MBSNBCMP, respectivamente. _tccmp es equivalente a _tcsnccmp ".

Una pregunta similar es _tcslen vs _tcsclen.

¿Fue útil?

Solución

Sí, lo haces bien.

La pregunta, sin embargo, es por qué lo transmite a TCHAR, algo que es sensible a _Unicode Definir.

¿Por qué no usar UTF8 y Char*?

Otros consejos

TCHAR es un tipo que es 8 o 16 bits dependiendo de si _UNICODE se define. Pero UTF-8 siempre Utiliza unidades de código de 8 bits, por lo que usar TCHAR es tonto. Solo usa char.

TCHAR está vinculado a la existencia de dos versiones de la API de Windows: "A" funciones que usan páginas de código heredadas de 8 bits y funciones "W" que usan UTF-16. UTF-8 no es compatible. Puede usar UTF-8 en Windows convirtiendo explícitamente sus cadenas UTF-8 en UTF-16 para llamadas API, pero no recibirá ninguna ayuda de _UNICODE o TCHAR.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top