一、zlib常用函数 常用数据结构:
typedef struct z_stream_s{ z_const Bytef* next_in;//压缩数据的首地址 uInt avail_in; //压缩数据的长度 uLong total_in; // 将要压缩数据缓冲区的长度 Bytef *next_out; // 压缩后数据保存位置。 uInt avail_out; // 压缩后数据的长度 uLong total_out; // 压缩后数据缓冲区的大小 z_const char *msg; // 存放最近的错误信息,NULL表示没有错误 struct internal_state FAR *state; /* not visible by applications */ alloc_func zalloc; /* used to allocate the internal state */ free_func zfree; /* used to free the internal state */ voidpf opaque; /* private data object passed to zalloc and zfree */ int data_type; // 表示数据类型,文本或者二进制 uLong adler; /* adler32 value of the uncompressed data */ uLong reserved; /* reserved for future use */ }z_stream;压缩初始化:
int deflateInit2 (z_streamp strm,int level,int method,int windowBits,int memLevel, int strategy); strm: 关联的数据结构 level: 压缩级别,压缩级别是一个0-9的数字,0压缩速度最快(压缩的过程),9压缩速度最慢,压缩率最大,0不压缩数 method: 压缩的模式,现在只有一种。Z_DEFLATED(表示数字8) windowBits: 表示处理raw deflate的方法。windowBits为8..15,也可以为-8...-15。当值为16时,将会加上一个简单gzip头部和尾部。 memLevel:指定的内部压缩状态,应该分配多少内存。 memLevel=1使用的最小内存,但很慢,降低了压缩比; memLevel=9使用的最大内存以获得最佳的速度。默认值是8。请参阅作为的函数windowBits和memLevel的使用的总内存zconf.h。 strategy:压缩的策略压缩:
int deflate(z_streamp strm, int flush); strm:关联的数据结构,要压缩的数据、长度、压缩数据的存放位置和可用大小,都在其中设置的 flush: 采用何种法师将压缩的数据写到缓冲区中。压缩结束:
int deflateEnd (z_streamp strm);//关联的数据结构二、URL的组成
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument协议、域名、端口、服务器上的文件路径、参数
三、正则表达式的使用
std::regex pattern("^"+i.first+"|");//定义要匹配的字符 std::cmatch m;//匹配完成得到的结果 bool std::regex_search(url.c_str(),m.pattern);//搜寻