2010-08-26 2 views
9

Dans some of its API function Microsoft utilise le format "multi-chaîne" pour spécifier une liste de chaînes. Si je comprends bien, une chaîne multiple est un tampon à terminaison nulle de chaînes à terminaison nulle concaténées. Mais cela peut aussi être interprété comme une liste de chaînes, séparées par un caractère nul et terminées par deux caractères nuls.Détails sur le format multi-chaîne Microsoft

Voici un exemple. Une liste composée des éléments suivants:

Devient:

apple\0banana\0orange\0\0 

Mais maintenant, je me demande:

Comment une liste vide être représenté?

Serait-il:

\0 

Ou:

\0\0 

je ne ai pas trouvé une documentation précise qui clarifie cela. Une idée?

+0

La dernière chaîne dans une « liste de chaînes » est la chaîne de longueur zéro. Un simple \ 0 est alors suffisant pour se terminer. –

+0

Vous vous demandez comment cela fonctionne avec UTF-8 et ses caractères multi-octets? – Piskvor

+3

L'API Windows ne supporte pas UTF-8 :-(Mais si c'était le cas, rien ne changerait car les caractères multi-octets UTF-8 n'incluent jamais 0. – dan04

Répondre

9

\0

+1

Je parie que c'est ta plus courte réponse; . Je vous remercie. – ereOn

+1

Je suis un homme de peu de mots. Si seulement vous pouviez dire "Cela répond parfaitement à ma question, merci." juste en cliquant sur une coche ... – dan04

+0

Il n'est donc pas possible d'avoir une chaîne vide ("") dans une telle liste? – torak

3

Il serait \0. Raymond Chen describes how this works on his blog: la liste des chaînes se termine par une chaîne vide. Si la première chaîne de la liste est vide, la liste elle-même est vide.

+0

Oui, c'est un super article ;-) – dan04

Questions connexes