• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            hdqqq

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              35 隨筆 :: 0 文章 :: 104 評論 :: 0 Trackbacks

            ?

            /*

            ??? Zlib 是常用的壓縮庫,在很多平臺上使用,是用c和部分匯編完成的,提供的是基于c接口的使用函數

            zlib 的contrib中提供了三種基于iostream的使用方式.

            ?

            ?? 在MFC中,經常使用CFile進行文件的讀寫操作,在這種時候,如果想使用Zlib的話,要么使用zlib自身

            提供的操作函數,要么使用zlib contrib中iostream操作流.或者自己對zlib進行封裝.

            ?

            所以我對zlib進行了封裝,便于使用.

            ?

            Filter 功能類

            zlib_compress_filter<int 壓縮級別> 實現壓縮功能類,根據模板參數實現不同的壓縮程度.??

            zlib_uncompress_filter<int >? 實現解壓功能類,模板參數總為 1


            Filter類自身帶有 緩沖區, 可以存儲處理后的數據,用戶可以直接通過這兩個Filter類對數據進行

            壓縮和解壓縮操作.

            ?

            Pipe類

            ??? 為了和MFC中的CFile類進行配接,對數據進行處理后,把CFile作為最后接受數據的容器,類似于

            Boost庫中的Sink,提供了一個模板實現的BufferPipe模板類.

            ?

            template <typename filter,typename buffer_type, typename next_pipe> class BufferPipe;

            模板參數:

            filter? 數據處理用filter

            buffer_type 緩沖類型

            next_pipe 后面接的pipe,可以是CFile,用于最終寫入磁盤.

            ?

            ?

            Pipe后還可以接一個Pipe,可以象一個管子連接起來,并且,以后通過擴充filter可以實現不同的數據操作功能.

            ?

            提供了一個測試代碼

            編譯后一個對話框 四個 按鈕

            ?

            按鈕1 將 c:\a.bmp? 壓縮為 c:\b.cr???? 使用filter

            按鈕2 將 c:\b.cr? 解壓縮為 c:\c.bmp?? 使用filter

            按鈕3 將 c:\a.bmp 壓縮為 c:\d.cr?? 使用pipe功能

            按鈕4 將 c:\a.bmp? 通過壓縮和解壓縮管道, 存儲為 e.bmp應該和a.bmp相同,用于測試管道的連接功能.?
            ?

            代碼位置:

            http://m.shnenglu.com/files/hdqqq/z_file.rar

            編譯需要的zlib 請自行到該庫的網站下載.

            這個文章實現的和boost中的filter類似的功能,可以和MFC配合使用.

            不足:

            fiter 使用的 buf_holder寫得比較粗糙,以后有機會的話,改進.

            */

            ?

            posted on 2006-09-01 13:03 hdqqq 閱讀(6029) 評論(7)  編輯 收藏 引用 所屬分類: c/c++

            評論

            # re: zlib 壓縮管道 2006-09-03 16:58 chenger
            為什么要把決定壓縮程度的參數作為模板參數呢?看不出有這個必要,而且不直觀  回復  更多評論
              

            # re: zlib 壓縮管道 2006-09-03 18:05 hdqqq_
            壓縮級別 總是要在某個地方設置的,作為模板參數,是為可可以在編譯期就確定下來,當然,也可以有別的做法.  回復  更多評論
              

            # re: zlib 壓縮管道 2006-10-07 00:00 ar4ever
            如何在VC6.0中使用Zlib庫呢,我使用的時候老是出錯。說是zlib1.dll是錯誤的。  回復  更多評論
              

            # re: zlib 壓縮管道 2006-11-22 16:28 hdqqq
            @ar4ever
            你可以在zlib的官方網站下載它的壓縮包,以zlib1.2.3為例,解壓縮后,其目錄下的project子目錄下,有vc 6 的工程文件,有8個項目,分別是匯編和c代碼的dll和lib輸出的工程,你編譯全部后,把你要用的lib 和頭文件 zlib.h 放到vc的include 和lib設置中就可以了.  回復  更多評論
              

            # re: zlib 壓縮管道 2009-04-07 16:13 guest
            壓縮級別作為運行時參數比較好,這樣程序就稍微靈活了。  回復  更多評論
              

            # re: zlib 壓縮管道 2009-06-10 14:25 ayang
            你這樣的代碼方式屬于什么風格的?  回復  更多評論
              

            亚洲精品美女久久久久99小说| 成人久久免费网站| 久久精品人妻一区二区三区| 久久国产精品视频| 精品一二三区久久aaa片| 久久综合九色综合网站| 91精品国产91久久| 伊人情人综合成人久久网小说| 久久精品国产男包| 99久久精品免费| 亚洲国产一成人久久精品| 99久久无码一区人妻| 精品综合久久久久久98| 久久91这里精品国产2020| 97精品国产97久久久久久免费| 亚洲国产成人久久综合一 | 久久国语露脸国产精品电影| 色综合久久无码中文字幕| 精品水蜜桃久久久久久久| 国产精品一区二区久久不卡| 久久青青草视频| 国产99久久久久久免费看| 青草国产精品久久久久久| 亚洲国产成人精品无码久久久久久综合| 亚洲va久久久噜噜噜久久男同| 爱做久久久久久| 91久久香蕉国产熟女线看| 久久棈精品久久久久久噜噜| 久久笫一福利免费导航| 亚洲乱码日产精品a级毛片久久| 精品熟女少妇aⅴ免费久久| 久久久综合九色合综国产| 精品乱码久久久久久久| 熟妇人妻久久中文字幕| 青青热久久国产久精品 | 国产成人精品三上悠亚久久| 久久精品国产一区二区三区不卡 | 94久久国产乱子伦精品免费| 99久久人妻无码精品系列| 国产精品无码久久久久久| 97久久综合精品久久久综合|