代码
#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<<"====================
"<<base64
<<"
====================
"<<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工程文件