• <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://www.shnenglu.com/files/hdqqq/z_file.rar

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

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

            不足:

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

            */

            ?

            posted on 2006-09-01 13:03 hdqqq 閱讀(6023) 評論(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
            你這樣的代碼方式屬于什么風格的?  回復  更多評論
              

            人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 精品久久久久久无码不卡| 久久久受www免费人成| 日韩美女18网站久久精品| 久久久无码精品亚洲日韩京东传媒| 中文成人久久久久影院免费观看| 亚洲色婷婷综合久久| 亚洲国产精品久久久久婷婷老年| 青青青青久久精品国产| 91麻豆国产精品91久久久| 国产精品久久久久久福利69堂| 精品国产热久久久福利| 色欲久久久天天天综合网| 国产亚洲美女精品久久久| 精品国产乱码久久久久久呢| 国产精品成人99久久久久| 亚洲AV日韩AV永久无码久久| 久久伊人五月天论坛| 狠狠88综合久久久久综合网| 午夜精品久久久内射近拍高清| 国产精品一区二区久久| 久久99热这里只有精品国产| 久久久久免费视频| 久久久久四虎国产精品| 国产精品久久午夜夜伦鲁鲁| 久久久高清免费视频| 欧美久久天天综合香蕉伊| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲国产精品无码久久九九| 精品一区二区久久久久久久网站| 久久亚洲AV成人无码国产| 偷偷做久久久久网站| 久久综合给合综合久久| 97超级碰碰碰碰久久久久| 久久免费线看线看| 久久久青草青青亚洲国产免观| 精品久久久久久国产91| 久久精品国产99国产电影网 | 久久99精品久久久久婷婷| 久久人人爽人人爽人人片av麻烦 | 一本久久精品一区二区|