从apache扒出来一段string代码
版权声明:按照by-nc-sa的cc协议可转载,拒绝采用“独家” 授权媒介(含网站和平面媒体)转载、引用、链接,除非获得本人许可。转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
http://blog.devep.net/virushuo/2007/02/24/apache_mwa_string_for_c.html
c 里面字符串处理很讨厌,比如要append东西,就要memset,memcpy,malloc来回折腾,很麻烦。
我问tiny,这种东西大家每次用都自己写一个,难道就没有一个通用的吗?都这么多年了...tiny说都是自己写的。说的也没错,其实这东西就是基本功,应该顺手就能写一个linebuffer出来。但是他还是麻烦啊。字符串处理是内存相关的,大概是c最难掌握的技巧之一了。
我觉得C++比C好学的原因之一就是C++的std下面提供了很好的字符串类。
翻了几个著名的opensource项目,最后我从apache httpd里面扒出来这几个字符串处理函数,还不错。用起来也很简单。
就这样就可以:
MWA_STRING string;
apr_pool_t *pool;
init_string(&string, pool);
append_string(&string,"1111",0);
append_string(&string,"2222",0);
printf("%s",string.data);
用append往上增加字符串。
代码在:
http://blog.devep.net/virushuo/2007/02/24/mwastring.c
http://blog.devep.net/virushuo/2007/02/24/mwastring.h
update :
令狐虫 提醒,这个模块是mod_ WebAuth的一部分。他说的是对的。我是从apr_pool_t开始扒的,故有此错误。谢谢提醒。
关于许可证的问题,我怎么记得mit/bsd都是非继承的许可证呢?应该不用再声明吧?






