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函数应用于此类数组,它们不是为它们定义的。