我有一个简单的问题:有没有办法在以零结尾的数组中进行类似strlen()
的字符计数?char16_t
问问题
3622 次
3 回答
20
利用
char_traits<char16_t>::length(your_pointer)
参见C++11-Std 的21.2.3.2struct char_traits<char16_t>
和表 62。
于 2011-04-28T19:03:48.347 回答
2
使用指针:),创建一个指向起点的重复指针,然后循环遍历它while (*endptr++);
,然后长度由 给出endptr - startptr
。您实际上可以对此进行模板化,但是,编译可能不会生成与它相同的内部代码strlen
(对于不同大小的 c)。
于 2011-04-28T13:01:22.487 回答
0
Necrolis 答案在长度中包含 NULL 字节,这可能不是您想要的。strlen()在长度中不包括 NULL 字节。
调整他们的答案:
static size_t char16len(uint16_t *startptr)
{
uint16_t *endptr = startptr;
while (*endptr) {
endptr++;
}
return endptr - startptr;
}
我意识到有一个公认的 C++ 答案,但这个答案对于使用 C 偶然发现这篇文章的任何人都很有用(就像我一样)。
于 2021-12-21T16:37:42.413 回答