• <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 閱讀(6020) 評論(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热这里只有精品国产 | 久久福利青草精品资源站免费| 久久久亚洲AV波多野结衣 | 久久久久国色AV免费观看| 亚洲国产综合久久天堂| 亚洲国产精品无码久久久蜜芽| 国内精品伊人久久久久| 一本色道久久88综合日韩精品 | 久久综合九色综合欧美就去吻| 久久久久高潮综合影院| 色综合久久综精品| 亚洲另类欧美综合久久图片区| 久久99国产综合精品免费| 久久免费视频6| 久久91精品久久91综合| 久久精品aⅴ无码中文字字幕不卡| 久久久久久综合一区中文字幕| 亚洲精品WWW久久久久久| 色成年激情久久综合| 久久精品麻豆日日躁夜夜躁| 亚洲国产成人久久一区久久| 青青青青久久精品国产| 久久久久久夜精品精品免费啦| 日产久久强奸免费的看| 久久久青草青青亚洲国产免观 | 久久精品国产一区二区| 久久久国产精品福利免费| 久久综合给久久狠狠97色| 国产精品久久婷婷六月丁香| 精品综合久久久久久88小说| 久久精品人人做人人爽电影| 亚洲国产欧洲综合997久久| 99精品久久久久久久婷婷| 久久国产亚洲精品| 香蕉久久久久久狠狠色| 久久久久久久免费视频| 久久免费视频1| 久久久久久午夜成人影院| 久久精品国产久精国产思思| 国产精品一久久香蕉国产线看观看 |