眾所周知,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久久蜜臀亚洲AV无码精品| 色综合色综合久久综合频道| 麻美ゆま夫の目の前で犯| 久久受www免费人成_看片中文| 久久99蜜桃精品麻豆| 久青草国产在线视频| 年轻老师毛茸茸自由性| 秋霞电影网午夜鲁丝片| 熟女理发厅| 亚洲精品无码专区在线播放| 永久免费看A片无码网站四虎| 最新国产三级在线不卡视频| free乌克兰性xxxxhd| 国产成人精品久久一区二区三区| 国产久爱青草视频在线观看| 国偷自产视频一区二区99| 久色视频网| 日本zljzljzlj精品| 午夜伦理网| 在线不卡日本v二区到六区| CHINA篮球体育飞机2023| 国产 亚洲 中文字幕 久久网| 国产综合欧美区在线| 麻豆一二三四区乱码| 日韩免费精品视频| 亚洲精品午睡沙发系列| 91精品欧美一区二区三区| 跪趴式啪啪GIF动态图27报| 精品国产99久久久久久麻豆| 男人吃奶摸下弄进去好爽| 婷婷色色狠狠爱| 曰本xxⅹ孕妇性xxx| 成人特级毛片| 精品欧美18videosex欧美| 欧美日韩在线成人看片a| 亚洲 综合 欧美在线视频| 97视频在线观看免费播放| 国产成人综合在线观看| 两个人的视频hd全免费| 婷婷久久无码欧美人妻| 8090碰成年女人免费碰碰尤物|