在 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/