(固定長の) 文字列を圧縮してから、圧縮した長さを比較する必要があります (データの冗長性のプロキシとして、またはコルモゴロフの複雑さの大まかな近似として)。現在、圧縮にboost::iostreamsを使用していますが、うまく機能しているようです。ただし、圧縮データのサイズを取得する方法がわかりません。誰か助けてくれませんか?
コードスニペットは
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/gzip.hpp>
#include <boost/iostreams/device/file_descriptor.hpp>
#include <boost/filesystem.hpp>
#include <string>
#include <sstream>
namespace io = boost::iostreams;
int main() {
std::string memblock;
std::cout << "Input the string to be compressed:";
std::cin >> memblock;
std::cout << memblock << std::endl;
io::filtering_ostream out;
out.push(io::gzip_compressor());
out.push(io::file_descriptor_sink("test.gz"));
out.write (memblock.c_str(), memblock.size());
std::cout << out.size() << std::endl;
return 0;
}