В некоторые из своих функций API Microsoft использует «многострочный» формат для указания список строк.
Насколько я понимаю, многострока - это буфер с завершающим нулем конкатенированных строк с завершающим нулем. Но это также можно интерпретировать как список строк, разделенных нулевым символом и завершенных двумя нулевыми символами.
Вот пример. Список, состоящий из следующих элементов:
"apple", "banana", "orange"
Становится:
apple\0banana\0orange\0\0
Но теперь я задаюсь вопросом:
Как бы был представлен пустой список ?
Был бы он:
\0
Или:
\0\0
Мне не удалось найти точную документацию, разъясняющую это. Есть подсказка?
Это будет \0
.
Раймонд Чен описывает, как это работает, в своем блоге: список строк завершается пустой строкой. Если первая строка в списке пуста, сам список пуст.
Если вы работаете с ними, много лет назад я написал итератор в стиле STL, который работает с ними: