strlen如何计算c中的unicode

时间:2014-11-23 08:18:04

标签: c unicode count strlen

我很好奇strlen如何计算C中多个字节的unicode字符。

它是否计算每个字节或字符(因为它们可以包含几个字节),直到第一个' \ 0'?

2 个答案:

答案 0 :(得分:7)

strlen()计算遇到\0之前的字节数。这适用于所有字符串。

对于Unicode,请注意strlen()的返回值可能会受到空终止符以外的有效字符中可能存在的\0字节的影响。如果使用UTF-8,那很好,因为除了0之外没有有效字符可以有\0字节,但对于其他编码可能不是这样。

答案 1 :(得分:3)

strlen仅适用于字符串,即char的空终止数组。字符串内允许的所有多字节编码都具有不包含内部空字节的属性,因此strlen和其他str函数(如strcat)可以正常工作。

如果通过“unicode”表示wchar_t的数组,那么这可以包含空字节,但是这里再次没有问题,wchar_t元素本身都不会为空。并且您不应该将str函数应用于此类数组,而不是为它们定义它们。