2 qq 26963863 qq_26963863 于 2015.07.10 21:53 提问

C++,huffman树编码的压缩软件输出到txt的问题

string line;
while(getline(ifsa2,line))
{
for(int m=0;m<line.length();m++)
{
//cout<<line[m];
if(line[m]!=' ')
{
for(int i=0;i<leafs.size();i++)
{
if(leafs[i].data==line[m])
{
break;
}
}
for(int j=0;j<tree.GetCode(i).size();j++)
{
ofsb<<tree.GetCode(i)[j];
}
}
else
{
ofsb<<" ";
}
}
ofsb<<"\r\n";
//cout<<endl;
}
两条注释是测试用的,在linux环境下输出的是txt原文件内容,但是如上定义一个输出流为ofsb,生成的压缩文件从第三行开始出现错误,原文件中从第三行开始字符前有空格,字符前的空格无法显示,我想错误可能与此有关。求大神指点指点。

3个回答

qq_26963863
qq_26963863   2015.07.10 21:57

另:ofsb这个流是以二进制形式创建的,ifsa2是正常的输入流

frank_20080215
frank_20080215   2015.07.10 22:35

ofsb这个流是以二进制形式,所以会出错

qq_26963863
qq_26963863 不用二进制了还是有错,输入文件的huffman编码从第三行开始不匹配
2 年多之前 回复
qq_26963863
qq_26963863 但是压缩软件就是要保存为二进制形式才节省空间的啊,我想的是原文件里的字符(1字节)压缩后可以用少于8位的二进制串表示,空格,换行的地方依然保留,以便解压缩,用二进制的话这该怎么做呢?
2 年多之前 回复
qq_26963863
qq_26963863   2015.07.11 10:16

但是压缩软件就是要保存为二进制形式才节省空间的啊,我想的是原文件里的字符(1字节)压缩后可以用少于8位的二进制串表示,空格,换行的地方依然保留,以便解压缩,用二进制的话这该怎么做呢?

Csdn user default icon
上传中...
上传图片
插入图片