📄 decodetree.cpp
字号:
#include <iostream>
#include <fstream>
#include "bitio.h"
#include "decodetree.h"
using namespace std;
decodetree::decodetree(const char* filepath){
ifstream in(filepath);
in >> itemCount;
in >> rootid;
in >> wordcount;
for(int i = 0;i < 512;i ++){
in >> it[i].id;
in >> it[i].left_child;
in >> it[i].right_child;
}
in.close();
}
void decodetree::decodePro(void){
int rt;
char t;
int lastnode;
int putcount = 0;
unsigned char buffer[100];
static int state = 0;
bitFile in("out.txt"),
out("m.txt");
while(1){
t = (char)in.getChar();
if(t == 'a') //temp
break;
}
in.getBit();
while(1){
rt = in.getBit();
// cout << rt;
if(rt == -1) //over
break;
if(state == 0){
lastnode = nextNode(rootid,rt);
state = 1;
}
else if(state == 1){
lastnode = nextNode(lastnode,rt);
}
if(lastnode >= 0 && lastnode <= 255){
out.writeChar(lastnode);
putcount ++;
// cout << lastnode << endl;
state = 0;
}
if(putcount == wordcount)
break;
}
}
int decodetree::nextNode(int id,int dir){
for(int i = 0;i < 512;i ++){
if(it[i].id == id){
if(dir == 0)
return it[i].left_child;
else
return it[i].right_child;
}
}
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -