眾所周知,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 = ‘ 主站蜘蛛池模板: 伊人天天操 | 在线a亚洲老鸭窝天堂新地址 | 日本一本在线视频 | 亚洲五月激情综合图片区 | 欧美日一区二区三区 | 国外精品视频在线观看免费 | 青楼社区51在线视频视频 | 亚洲人成77777在线观看网 | 狠狠色噜噜狠狠狠狠91 | 免费观看的黄色网址 | 欧美巨大bbbb动漫 | 免费视频一区二区 | 澳门三级bd高清 | 国内精品免费视频自在线 | 777奇米影视笫四色88me久久综合 | 日本www色视频成人免费网站 | 日韩爽片 | 欧美亚洲啪啪 | 亚洲天堂手机在线 | 亚洲一区二区三区四区在线观看 | 久久久久国产精品 | www.av在线免费观看 | 天天上天天操 | 天天色天天做 | 婷婷六月综合 | 午夜视频免费在线播放 | 免费国产高清精品一区在线 | 成人a区 | 午夜一级精品免费毛片 | 性久久久久久 | 亚洲色图2 | 99久久免费精品国产免费高清 | 黄视频在线播放 | 福利视频自拍偷拍 | 亚洲你懂的 | 国产一级片免费 | 欧美xxxx日本| 欧美18videosex性欧美1819 | 成人美女隐私免费 | 国产精品久久精品福利网站 | 特黄级 |