2010-08-26 14 views
9

In some of its API function Microsoft usa il formato "multistringa" per specificare un elenco di stringhe.Dettagli sul formato multistringa Microsoft

Come ho capito, una stringa multipla è un buffer con terminazione null di stringhe con terminazione null concatenata. Ma questo può anche essere interpretato come una lista di stringhe, separate da un carattere nullo e terminate da due caratteri nulli.

Ecco un esempio. Un elenco composto dai seguenti elementi:

diventa:

apple\0banana\0orange\0\0 

Ma ora mi chiedo:

Come sarebbe un lista vuota essere rappresentato?

sarebbe:

\0 

Oppure:

\0\0 

non sono riuscito a trovare una documentazione accurata che chiarisce questo. Qualche indizio?

+0

L'ultima stringa in una "lista stringa" è la stringa di lunghezza zero. Un singolo \ 0 è quindi sufficiente per terminare. –

+0

Mi chiedo come funzioni con UTF-8 e con i suoi caratteri multibyte? – Piskvor

+3

L'API di Windows non supporta UTF-8 :-(Ma se lo facesse, non cambierebbe nulla perché i caratteri multibyte UTF-8 non includono mai \ 0. – dan04

risposta

9

\0

+1

Scommetto che questa è la risposta più breve di sempre;) Risponde perfettamente alla mia domanda . Grazie. – ereOn

+1

Sono un uomo di poche parole. Se solo tu potessi dire "risponde perfettamente alla mia domanda però. Grazie." semplicemente facendo clic su un segno di spunta ... – dan04

+0

Quindi non è possibile avere una stringa vuota ("") in tale elenco? – torak

3

Sarebbe \0.

Raymond Chen describes how this works on his blog: l'elenco di stringhe è terminato da una stringa vuota. Se la prima stringa nell'elenco è vuota, la lista stessa è vuota.

+0

Sì, questo è un grande articolo ;-) – dan04

Problemi correlati