2010-08-26 8 views
9

En some of its API function Microsoft usa el formato "multi-cadena" para especificar una lista de cadenas.Detalles sobre el formato de múltiples cadenas de Microsoft

Según tengo entendido, una multitradena es un búfer terminado en nulo de cadenas concatenadas terminadas en nulo. Pero esto también se puede interpretar como una lista de cadenas, separadas por un carácter nulo y terminadas por dos caracteres nulos.

Aquí viene un ejemplo. Una lista compuesta por los siguientes elementos:

se convierte en:

apple\0banana\0orange\0\0 

Pero ahora me pregunto:

¿Cómo una lista vacía estar representados?

¿Sería:

\0 

O:

\0\0 

no pude encontrado una documentación precisa que aclara esto. Cualquier pista ?

+0

La última cadena en una "lista de cadenas" es la cadena de longitud cero. Un único \ 0 es suficiente para terminar. –

+0

¿Me pregunto cómo funciona esto con UTF-8 y sus caracteres multibyte? – Piskvor

+3

La API de Windows no es compatible con UTF-8 :-(Pero si lo hiciera, nada cambiaría porque los caracteres UTF-8 multibyte nunca incluyen \ 0. – dan04

Respuesta

9

\0

+1

Apuesto a que esta es su respuesta más corta;) Sin embargo, responde perfectamente mi pregunta . Gracias. – ereOn

+1

Soy un hombre de pocas palabras. Si tan solo pudieras decir "perfectamente responde mi pregunta, gracias". simplemente haciendo clic en una marca de verificación ... – dan04

+0

¿Entonces no es posible tener una cadena vacía ("") en dicha lista? – torak

3

Sería \0.

Raymond Chen describes how this works on his blog: la lista de cadenas finaliza con una cadena vacía. Si la primera cadena de la lista está vacía, la lista está vacía.

+0

Sí, es un gran artículo ;-) – dan04

Cuestiones relacionadas