C ++ 11 char16_t strlen-эквивалентная функция - PullRequest
11 голосов
/ 28 апреля 2011

У меня простой вопрос: есть ли способ сделать strlen() -подобное количество символов в массиве char16_t с нулем в конце?

Ответы [ 2 ]

20 голосов
/ 28 апреля 2011

использование

char_traits<char16_t>::length(your_pointer)

см. 21.2.3.2 struct char_traits<char16_t> и таблица 62 C ++ 11-й стандарт.

2 голосов
/ 28 апреля 2011

Используйте указатели :), создайте дублирующий указатель на начало, затем выполните цикл по нему while (*endptr++);, тогда длина будет определена как endptr - startptr.Вы можете на самом деле шаблонировать это, однако, возможно, что компиляция не сгенерирует тот же внутренний код, который он делает для strlen (для различных размеров c).

...