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 字符串中的字节数。
只要我使用 char
而不是某些 wchar_t
类型来声明字符串, strlen()
就会正确报告字符串中 char
的数量或我需要注意一些非常具体的情况吗?这是一个例子:
char *something = "Report all my chars, please!";
strlen(something);
strlen
所做的基本上是计算所有字节,直到遇到零字节,即所谓的空终止符,字符 '[=11=]'
.
因此,只要字符串在为字符串分配的内存范围内包含终止符,strlen
就会正确 return 字符串中 char
的数量。
请注意,strlen
无法计算多字节编码字符串(如 UTF-8)中的字符数(代码点)。它会正确 return 字符串中的字节数。