今天终于在流系统里面添加了Huffman的压缩解压算法,现在只需要将一个LZ77流加到Huffman流上面,就能同时使用两种压缩算法进行压缩了。我的Huffman算法使用了
Canonical Huffman编码方法进行Huffman树的生成。
于是做了一下实验,发现Huffman比LZ77差了稍微一点,不过将LZ77和Huffman结合起来的时候,先LZ77的话,效果有时候比单独的LZ77好,有时候差。不过要是Huffman先的话,那文件会变大差不多两倍(囧)。
现在流系统已经拥有以下的类:
1、文件流
2、内存流
3、缓存流
4、重定向流,用于将一个写操作传递给多个流进行写操作
5、备份流,用于将一个读操作在交给用户之前,传递给一个流进行写操作
6、LZ77流
7、Huffman流
8、Socket流
9、Named Pipe流
10、共享内存流
11、按位读写器
12、文本读写器
12.1、基于字符串对象的文本读写器
12.2、基于流对象的文本读写器
其中文本读写器支持ReadLine、ReadChar、ReadString和ReadToEnd功能。对于使用记事本保存的文本文件,无论字符编码是什么,均能辨别。不使用这个功能的话,用户也可以手动指定字符编码。文本读写器还将不规范的换行符格式化成用户指定的换行符。这样在读一个文本流的时候,用户就可以不必操心一个文本文件所使用的换行符和字符编码分别是什么了。
posted on 2009-01-10 09:16
陈梓瀚(vczh) 阅读(3493)
评论(0) 编辑 收藏 引用 所属分类:
C++