Что такое последовательность терминаторов строк для строки UTF-16?
EDIT:
Позвольте мне перефразировать этот вопрос в попытке прояснить. Как работает вызов wcslen()?
Ответ 1
Unicode не определяет терминаторы строки. Ваша среда или язык делает. Например, строки C используют 0x0 в качестве ограничителя строки, а также в строках .NET, где для хранения длины строки используется отдельное значение в классе String.
Чтобы ответить на ваш второй вопрос, wcslen ищет завершающий символ L'\0'. Как я понимаю, это любая длина 0x00 байт, в зависимости от компилятора, но, скорее всего, это будет двухбайтовая последовательность 0x000x00 если вы используете UTF-16 (кодировка U + 0000, 'NUL')
[#3] The wcslen function returns the number of wide
characters that precede the terminating null wide character.
И широкий нулевой символ L'\0'
Ответ 3
Нет. Строковые терминаторы не являются частью кодировки.
Например, если у вас была строка ab, она была бы закодирована в UTF-16 со следующей последовательностью байтов: 61 00 62 00. И если у вас 大家, вы получите 27-59-B6-5B. Так как вы не видите предопределенной последовательности терминатора.