眾所周知,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 = ‘ 主站蜘蛛池模板: 黄网站免费大全 | 色婷婷综合网 | 亚洲va久久久噜噜噜久久天堂 | 国产午夜精品久久久久九九 | 国产欧美久久久精品影院 | 黄色三级网站 | 俺去操 | 久热中文字幕在线精品免费 | 四虎影院国产精品 | 色爱区综合激月婷婷激情五月 | 美女扒开内裤无遮挡禁18 | 久久久久久久久久久观看 | 亚洲淫视频 | a一级视频| 色a在线| 色橹橹| 亚洲精品黄色 | 天堂网色| 午夜看片| 中文字幕一精品亚洲无线一区 | 欧美精品久久久久久久小说 | 亚洲香蕉久久一区二区三区四区 | 在线免费看黄的网站 | 欧美猛交xxxx免费看 | 美女网站黄页 | 国产永久免费爽视频在线 | 五月亭亭六月丁香 | 天天看天天摸天天操 | ww7788色淫网站女女免费 | 男男h啪肉np文总受 男男h全肉耽污 | 天天看黄| 一卡二卡卡四卡无人区中文 | 影音先锋午夜资源网站 | av手机在线播放 | 丁香花在线视频观看免费 | 天天干夜夜玩 | 久久综合九色婷婷97 | 日本人六九视频69jzz免费 | 免费人成网555www | 成人免费的性色视频 | 天天久久综合网站 |