Подробности о многострочном формате Microsoft - PullRequest
9 голосов
/ 26 августа 2010

В некоторые функции API Microsoft использует формат «multi-string» для указания списка строк.

Насколько я понимаю, многострочный это буфер с нулевым символом в конце сцепленных строк с нулевым символом в конце. Но это также можно интерпретировать как список строк, разделенных нулевым символом и оканчивающихся двумя нулевыми символами.

Вот пример. Список, составленный из следующих пунктов:

"apple", "banana", "orange"

становится:

apple\0banana\0orange\0\0

Но теперь мне интересно:

Как будет представлен пустой список ?

Будет ли это:

\0

Или:

\0\0

Мне не удалось найти точную документацию, которая проясняет это. Любая подсказка?

Ответы [ 3 ]

9 голосов
/ 26 августа 2010
3 голосов
/ 26 августа 2010

Это будет \0.

Раймонд Чен описывает, как это работает в его блоге : список строк заканчивается пустой строкой. Если первая строка в списке пуста, сам список пуст.

2 голосов
/ 26 августа 2010

Если вы работаете с ними, много лет назад я написал итератор в стиле STL, который работает на них:

http://noveltheory.com/iterators/Iterator_N3.htm

...