c - 有没有人使用结构来存储字符串和长度来实现 string.h 的替换?

标签 c string

在 C 标准库中,字符串是使用字符数组实现的,以空字符结束:'\0'。这样的 ASCIZ 字符串会导致效率低下,因为每次我们需要知道字符串的长度时,我们都需要遍历它来寻找 '\0'。

解决这个问题的方法是在我们创建字符串时存储它的长度,例如使用如下结构:

typedef struct cstring_ {
    size_t nchars;
    char chars[0];
} cstring;

有没有人制作了一个共享库来实现 string.h 函数,但使用结构而不是 char * 来传递字符串?

如果不是,是否有具体原因说明这不是一个好主意?

最佳答案

可能有几十个。看看Glib's GString例如。

关于c - 有没有人使用结构来存储字符串和长度来实现 string.h 的替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328526/

相关文章:

c - Windows下如何获取ip地址

c - 使用 gcc 优化 -mavx 失败?

python - 如何格式化可变数量的参数?

java - 十六进制 -> float 转换不准确

python - 计算连续字符

python - 在python中扩展内置类

c - 文字字符串索引是标准 C 吗?

c - 位操作 C allEvenBits

c - 如何使用 strcat() 连接字符串

java - 为什么在java String构造函数的实现中可以直接引用另一个字符串的私有(private)属性