本次程序设计遇到的问题及解决方法:
C++中读写对象的方法
写:
ofstream wr("Path", ios::out | ios::trunc);
wr.write((char *) &obj, sizeof(obj));
wr.close();
读:
ifstream rin("Path", ios::in | ios::binary);
rin.read((char*)&obj, sizeof(obj));
rin.close();
注意:以此方式读写对象的前提是对象中不能有string类型数据成员!
否则报错:
SIGSEGV (Segmentation fault)
查询资料整合:
1.模式标志
(补充:ios::binary : 以二进制方式打开文件)
2.读写的关键语句
istream& read(char *buffer,int len);
ostream& write(const char * buffer,int len);
注:读写的参数是char型的数据对象指针, 单个数据对象的内存长度。
C++中char型数组与string的转化
1.char数组转化为string:
char charArray[];
string str(charArray);
2.string转化为char数组:
char charArray[];
string str;
strcpy(charArray,str.c_str());
直观打印哈夫曼树的思路
整体思路:
1.使用前序遍历的方式,确定各个节点所在层数
2.使用中序遍历的方式,确定各个节点的相对位置(x轴上的)
3.按照各个节点所在层数进行排序,根据相应节点位置打印偏移量
哈夫曼编码的思路
整体思路:
若节点有左孩子,则左孩子的编码为该节点的编码值+“0”,对其左孩子进行编码;
右孩子操作同上。