strlen如何计算c中的unicode
我很好奇strlen如何计算C中多个字节的unicode字符。
是否计算每个字节或字符(因为它们可以包含几个字节),直到第一个’\ 0’?
strlen()
计算遇到\0
之前的字节数。 这适用于所有字符串。
对于Unicode,请注意strlen()
的返回值可能受除null终止符之外的有效字符中可能存在的\0
字节的影响。 如果使用UTF-8,那很好,因为除了ASCII 0
之外没有有效字符可以有\0
字节,但对于其他编码可能不是这样。
strlen
仅适用于字符串,即空终止的char
数组。 字符串中允许的所有多字节编码都具有不包含内部空字节的属性,因此strlen
和其他str
函数(如strcat
工作正常。
如果通过“unicode”表示wchar_t
数组,那么这可以包含空字节,但是这里再次没有问题, wchar_t
元素本身都不会为空。 并且您不应该将str
函数应用于此类数组,它们不是为它们定义的。