• <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 閱讀(6048) 評論(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
            你這樣的代碼方式屬于什么風格的?  回復  更多評論
              

            伊人热人久久中文字幕| 无码人妻久久一区二区三区| 精品久久久久久国产| 欧洲成人午夜精品无码区久久| 18禁黄久久久AAA片| 久久精品亚洲中文字幕无码麻豆 | 久久国产免费直播| 无码AV波多野结衣久久| 久久青青草原国产精品免费| 日日狠狠久久偷偷色综合0| 亚洲AV成人无码久久精品老人 | 久久亚洲综合色一区二区三区| 久久e热在这里只有国产中文精品99| 久久人人爽人人爽人人片av麻烦| aaa级精品久久久国产片| 色婷婷综合久久久久中文字幕 | 久久午夜福利无码1000合集| 国产精品一区二区久久不卡| 人人狠狠综合久久亚洲高清| 国产精品久久久久久吹潮| 亚洲精品综合久久| 狠狠色丁香婷婷综合久久来| 精品熟女少妇AV免费久久| 久久99国产精品成人欧美| 久久精品蜜芽亚洲国产AV| 亚洲国产综合久久天堂| 久久嫩草影院免费看夜色| 国产亚洲婷婷香蕉久久精品| 亚洲va久久久噜噜噜久久男同| 久久伊人色| 久久久中文字幕日本| 久久免费视频观看| 91精品日韩人妻无码久久不卡| 麻豆一区二区99久久久久| 精品久久久久成人码免费动漫| 久久伊人色| 国产成人综合久久精品红| 国产福利电影一区二区三区久久久久成人精品综合 | 久久精品国产清高在天天线| 国内精品九九久久精品| 久久人人青草97香蕉|