因为 C 中的字符串可以包含几个字节的 unicode 字符,其中一个字节可能是终止\0 字符,我认为 strlen 在计算这样一个字符串中有多少字节时效果不佳字符串。
如何正确计算这样一个字符串的字节长度?我不是为它分配内存的人,而是我使用库 dirent.h 中的 struct dirent 的属性 char d_name[256]。除了复制整个 256 个字节之外,还有什么方法可以查看字符串名称的长度吗?如果我不能只复制 256 个字节怎么办?
最佳答案
unicode 是什么意思?如果是UTF-8(dirent.h是POSIX API的一部分,所以应该是UTF-8),中间不能有'\0'
。 strlen 将完全满足您的需求。如果您使用一些非标准版本的 dirent(对于 Windows 可能是一些奇怪的端口)和 UTF-16,您可以使用适当的宽字符 string functions .
关于c - 如何计算超过 1 个字节的 unicode 字符的字符串长度(以字节为单位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27087256/