DLib库Base64编解码示例

代码

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <cstdlib>
#include <dlib/compress_stream.h>
#include <dlib/base64.h>

using namespace dlib;

int main(int argc, char** argv)
{
    system("title Base64 Encoder");
    if (argc != 2)
    {
        std::cout << "Usage: "<<argv[0]<<" filename" << std::endl;

        return EXIT_FAILURE;
    }

    // 打开命令行指定的文件
    std::ifstream fin(argv[1], std::ios::binary);
    if (!fin) {
        std::cout << "can't open file " << argv[1] << std::endl;
        return EXIT_FAILURE;
    }

    std::ostringstream sout;
    std::istringstream sin;

    // base64编码器对象
    base64 base64_coder;
    // 数据压缩流对象
    compress_stream::kernel_1ea compressor;

    // 压缩文件的内容并将结果存储在字符串流sout
    compressor.compress(fin,sout);
    sin.str(sout.str());
    sout.clear();
    sout.str("");

    // 对压缩数据进行base64编码
    base64_coder.encode(sin,sout);

    // 将输出流内容放入输入流中
    sin.clear();
    sin.str(sout.str());
    sout.str("");

    // 输出压缩后进行Base64编码后的字符串
    std::string base64 = sin.str();
    std::cout<<"====================\n"<<base64
             <<"\n====================\n"<<std::endl;

    // 对Base64字符串解码
    sin.clear();
    sin.str(base64);
    base64_coder.decode(sin,sout);

    // 将输出流内容放入输入流中
    sin.clear();
    sin.str(sout.str());
    sout.str("");
    // 对解码后的数据进行解压缩,并输出到标准输出
    compressor.decompress(sin,std::cout);
    return 0;
}

输出

测试的时候传入的是一个Qt工程文件

posted @ 2017-03-23 15:10  乌合之众  阅读(920)  评论(0编辑  收藏  举报
clear