C++ 创建用于压缩c++;
早上好。 我在C++中创建了一个哈夫曼树,它非常完美。 如果我从文件中提取一个简单的字符串,并将其放在我的哈夫曼树上 原文如下: 再见,哈夫曼的算法 在使用我的哈夫曼树进行压缩的最后,我将有一个编码字符串,如下所示: 111101010 1001101111111010111011100011100001 0111100010101111100010 1100000 010 1101001001001100101101111011010 111010101111011010 111010 10001011100000 010 11000111111000001 111001001001111001001001001111001001001001111001001001001001110000100100100100100100100111000010010010010010010010011100001001001011011011011011011011011011011011011011011001001101110000100111000010011100001 我必须把这个字符串写在一个文件中,理论上,这个文件必须比原始文件小,但很明显,这个文件的大小更大,因为编码的字符串更长 我试图将字符串写入二进制文件,但它不起作用。它的大小始终大于输入的大小C++ 创建用于压缩c++;,c++,file,tree,compression,huffman-code,C++,File,Tree,Compression,Huffman Code,早上好。 我在C++中创建了一个哈夫曼树,它非常完美。 如果我从文件中提取一个简单的字符串,并将其放在我的哈夫曼树上 原文如下: 再见,哈夫曼的算法 在使用我的哈夫曼树进行压缩的最后,我将有一个编码字符串,如下所示: 111101010 1001101111111010111011100011100001 0111100010101111100010 1100000 010 1101001001001100101101111011010 111010101111011010 111010 100
void IOFile :: WriteBinary(string str,string nome)
{
ofstream file (nome.c_str(),ios::out|ios::binary);
int len = str.size();
char *stringa = new char[len];
size_t length = str.copy(stringa, len);
stringa[length] = '\0';
file.write((char*)&stringa,len);
file.close();
delete stringa;
}
string IOFile :: ReadBinary(string percorso)
{
ifstream file(percorso.c_str(),ios::in | ios::binary);
file.seekg(0, ios::end);
int sizeInBytes = file.tellg();
file.seekg(0);
char *buff = new char[sizeInBytes];
if (file.is_open())
{
file.read((char*)&buff,sizeInBytes);
file.close();
}
string stringa = buff;
delete buff;
return stringa;
}
<>这是我写的C++代码,现在写和读这个赫夫曼文件,但是,我怎么解释它的行为不正确?
你能帮我创建一个比原始文件小的哈夫曼文件吗