c - 如何计算超过 1 个字节的 unicode 字符的字符串长度(以字节为单位)?

标签 c string unicode posix strlen

因为 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/

相关文章:

php - MySQL - 搜索瑞典语字符

计数到数组并写入文本文件 xcode

c - 当我使用 shmat 时出现段错误

javascript - JavaScript 有文字字符串吗?

java - 将括号添加到字符串中的字符序列

gwt - 在 GWT 中用等效的 "eace"替换 éàçè...

unicode - utf-8 null 和 utf-16/utf-32 null 一样吗?

c - 在 C 中实现互斥体的问题

c - 对 `palloc' 的 undefined reference

c - 字符串正在打印奇怪的字符 - lex 中的 c 代码