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

问题描述

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

c++-C++,huffman树编码的压缩软件输出到txt的问题的相关文章

Huffman树进行编码和译码

//编码 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<queue> #include<fstream> #include<map> using namespace std; typedef struct HuffmanNode{ int w;//节点的权值

我在用C#写一个huffman编码的窗体程序,但是在遍历huffman树的时候进入了死循环,我看了一下午没找到答案

问题描述 希望高手能够指点一下!谢了... form1.csusingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Collections;namespaceAL_4{publicpartialc

[玩一玩]编码和压缩part1

问题描述 荒废的周末,打了一上午游戏..还是要翻翻书,哪怕就是浏览一下.你有多久没有看书了,废柴?不看书的人生,连咸鱼都不如.PDF链接:现在的程序员最大毛病和短板是什么?缺乏专业知识基础.所以除了xxx信息系统之类的玩意儿,稍微专业一点的科技领域,所谓的"软件从业者"还比不上专业人士半路出家学编程来的好用.编程这门手艺说穿了只是一个工具.你敲钉子敲得再熟练,难道你就能当个木匠了?编程工具掌握的再多,说到底你也只会增删查改,你觉得做一颗行业的螺丝钉能有多大的出息?程序体现了灵动和变化,

自己动手写压缩软件

        想吃项记的烩面了--这小地方的可难吃.         看完了<裸婚时代>,我觉得冬瓜说得对,刘易阳不敢面对自己的真实感受.         女生都是感性的,工作永远不如生活重要.         不是坐在一起就叫团队,不是不吵架就叫态度.         昨晚一哥们说求k小直接可以进行k次冒泡,我都想不起来,我想到的是区间快拍,说明基础很重要.         对原版本的算法有很大修改,个人认为原版代码的命名不太规范,读起来比较累,本程序主要是界面参考了参考资料,读写文件完全

[非原创] 哈夫曼(Huffman )编码

  ==================================================== 前言: 本文是源于我在(上海交大)饮水思源BBS 的VC版解答其他网友提出的帮助请求.这是德国 DARMSTADT 工业大学C++作业题目之一,属于非计算机系的题目,题目本身要求完成的那几个辅助函数难度并不高.我在BBS上给出了这道题目的解答,但是同时我也想根据这个题目的说明文档,来仔细回顾一下 Huffman 编码.因此本文是以该题目的说明文档为基本框架的.我将对该文档中的主要部分转用

c++-Huffman树的问题,输入要统计的文件就闪掉

问题描述 Huffman树的问题,输入要统计的文件就闪掉 #include "stdafx.h" #include<iostream> #include<fstream> #include<cstring> #include<iomanip> using namespace std; typedef struct huffmannode { char ch; int weight; int parent; int lchild; int

压缩软件进化论:从诞生说起

中介交易 SEO诊断 淘宝客 云主机 技术大厅 回顾到DOS年代的时候,1984年的个人计算机标配是容量360kB 的 5.25 寸软盘.计算机存储介质容量之微小价格之昂贵和今时今日完全不能同日而语.当时,数据如果能进行压缩之后储存,在空间上和金钱上都是极大的节省. PKZIP .LHA和ARJ作为当时在DOS系统下的压缩软件基本三分天下,特别是第一个实现分卷压缩的ARJ压缩软件,对以软盘为主要存储方式的彼时意义不可小觑.然而1995年Win95诞生,PC真正开始普及,压缩软件市场也开始有了微妙

好压压缩软件:从细节打造完美高效压缩体验

中介交易 SEO诊断 淘宝客 云主机 技术大厅 纵观如今的压缩软件市场,从国外老牌压缩软件Winrar.7Z到国产免费压缩软件好压(HaoZip),再到近期新推出的360压缩.百压,压缩软件之间的竞争愈发激烈.除了在压缩率.压缩速度上下功夫,功能细节.用户体验方面也受到了各大压缩软件的重视.从2009年正式发布到现在,好压压缩软件已经成为中国用户量最大的免费压缩软件,稳稳占据国产压缩软件霸主地位. 自正式上线以来,目前好压软件安装用户已经超过7000万,成为装机必备软件之一.是什么让好压从众多压

深度评测压缩软件争霸 谁是新一代霸主

中介交易 SEO诊断 淘宝客 云主机 技术大厅 本周压缩软件市场异常活跃,360和百度相继推出的自己的压缩软件,连同已经在国内压缩软件市场稳稳占据一席之地.安装用户量超过7000万的好压,国产压缩软件市场呈现出群雄争霸的局面,而WINZIP.WINRAR等国外收费压缩软件必将渐渐远离中国市场.那么在后WINRAR时代,谁才是新一代的压缩软件霸主呢? 一. 压缩软件档案 二. 安装与卸载 1. 安装流程 好压安装过程 好压安装过程比较干净,在安装结束后有配置对话框出现,提供给用户个性化定制;一般新