眾所周知,C++ 中的string使用比較方便,關于C++ 中的string源碼實現可以看我的這篇文章:源碼分析C++的string的實現
最近工作中使用C語言,但又苦于沒有高效的字符串實現,字符串的拼接和裁剪都比較麻煩,而且每個字符串都需要申請內存,內存的申請和釋放也很容易出bug,怎么高效的實現一個不需要處理內存問題并且可以動態擴容進行拼接和裁剪的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 = ‘
主站蜘蛛池模板: 日本高清免费看 | 老司机试看午夜 | 中文字幕乱码亚洲无线三区 | 性吧 校园春色 | 男子扒开美女尿口做羞羞的事 | 视频成人永久免费看 | 日韩欧美精品有码在线播放 | 强开乳罩摸双乳吃奶视频 | 99热热在线精品久久 | 制服丝袜第一页 | 2018年免费三级av观看 | 欧美亚洲另类图片 | 色琪琪丁香婷婷综合久久 | 四库影院永久国产精品 | 成人国产亚洲精品A区天堂蜜臀 | 清冷受被CAO的合不拢 | 国产1769一七六九视频在线 | 国产乱人伦AV麻豆网 | 看了n遍舍不得删的黄文 | CHESENGAY痞帅警察GV | 一本道dvd久久综合高清免费 | 热综合一本伊人久久精品 | 不良网站进入窗口软件下载免费 | WWW国产亚洲精品久久 | 久久婷婷五月综合色丁香花 | 伊人狠狠丁香婷婷综合尤物 | 97公开超碰在线视频 | 老师的玉足高跟鞋满足我 | 日韩欧美中文字幕在线二视频 | 秋霞电影网视频一区二区三区 | 秋霞电影网视频一区二区三区 | 一级做a爰片久久毛片免费 一级做a爰片久久毛片潮喷动漫 | 亚洲欧美一区二区三区久久 | 国产精品久久久久久久久无码 | 欧美特级特黄a大片免费 | 亚洲精品中文字幕无码A片蜜桃 | 九九热精品视频在线观看 | xlxx美女| 国产偷窥盗摄一区二区 | 欧美AAAA片免费播放观看 | GAY2022空少被体育生暴菊 |