C语言怎么实现动态扩容的string

寻技术 C/C++编程 2023年07月11日 105

这篇文章主要介绍“C语言怎么实现动态扩容的string”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言怎么实现动态扩容的string”文章能帮助大家解决问题。

一个好的string应该有以下功能?

  • 创建字符串

  • 删除字符串

  • 尾部追加字符串

  • 头部插入字符串

  • 从尾部删除N个字符

  • 从头部删除N个字符

  • 裁剪字符串

  • 获取字符串长度

  • 获取完整字符串

下面,我们来看看各个功能的实现。

首先定义一个string的句柄,相当于C++中的实例。

struct c_string;
typedef struct c_string c_string_t;

在内部string的实现如下:

// string的初始内存大小
static const size_t c_string_min_size = 32;

struct c_string {
    char *str; // 字符串指针
    size_t alloced; // 已分配的内存大小
    size_t len; // 字符串的实际长度
};

创建字符串:

c_string_t *c_string_create(void) {
    c_string_t *cs;

    cs = calloc(1, sizeof(*cs));
    cs->str = malloc(c_string_min_size);
    *cs->str = '
关闭

用微信“扫一扫”