问题描述
- 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<<"rn";
//cout<<endl;
}
两条注释是测试用的,在linux环境下输出的是txt原文件内容,但是如上定义一个输出流为ofsb,生成的压缩文件从第三行开始出现错误,原文件中从第三行开始字符前有空格,字符前的空格无法显示,我想错误可能与此有关。求大神指点指点。
解决方案
另:ofsb这个流是以二进制形式创建的,ifsa2是正常的输入流
解决方案二:
ofsb这个流是以二进制形式,所以会出错
解决方案三:
但是压缩软件就是要保存为二进制形式才节省空间的啊,我想的是原文件里的字符(1字节)压缩后可以用少于8位的二进制串表示,空格,换行的地方依然保留,以便解压缩,用二进制的话这该怎么做呢?
时间: 2024-10-02 20:16:18