因为C中的字符串可以包含几个字节的unicode字符,其中一个字节可能是终止\ 0字符,所以我不认为strlen在计算这样的字节数时效果很好字符串。
如何正确计算这样一个字符串的长度?我不是为它分配内存的人,而是使用库dirent.h中struct dirent的属性char d_name [256]。除了复制整个256字节之外,还有什么方法可以看到字符串名称有多长?如果我不能复制256个字节怎么办?
答案 0 :(得分:3)
unicode是什么意思?如果它是UTF-8(dirent.h是POSIX API的一部分,那么它应该是UTF-8),它不能在中间包含'\0'
。 strlen将完全满足您的需求。如果您使用UTF-16的某些非标准版本的dirent(可能是某些奇怪的Windows端口),您可以使用适当的宽字符string functions。