strlen() 是否总是正确地报告指针初始化字符串中的字符数?

Does strlen() always correctly report the number of char's in a pointer initialized string?

只要我使用 char 而不是某些 wchar_t 类型来声明字符串, strlen() 就会正确报告字符串中 char 的数量或我需要注意一些非常具体的情况吗?这是一个例子:

char *something = "Report all my chars, please!";
strlen(something);

strlen 所做的基本上是计算所有字节,直到遇到零字节,即所谓的空终止符,字符 '[=11=]'.

因此,只要字符串在为字符串分配的内存范围内包含终止符,strlen 就会正确 return 字符串中 char 的数量。

请注意,strlen 无法计算多字节编码字符串(如 UTF-8)中的字符数(代码点)。它会正确 return 字符串中的字节数。