先逐个字符读取一个txt文件,内容如下:
将读取的字符存入一个队列中,内容如下:
在将队列中的字符写到另一个文件中,代码如下:
ofs.open("2.txt", ios::out | ios::binary);
while (!q.empty()) {
ofs.write((char*)&q.front(), sizeof(unsigned char));
q.pop();
}
ofs.close();
以下是写出的文件内容,和原文件内容一样,没有问题:
可是在原文件的最后加入一个 !
如下图所示:
再重复上述过程,得到一个队列,并将内容写入 2.txt 中
得到的内容如下:
产生了乱码:将队列中的字符和乱码中的字符比较一下:
上图中的左边的为原文件的字符,右图为乱码文件中的字符,将左图中的字符写入文件后字符的内容发生了变化。
请问这是为什么,以及解决方法。
上面的问题是关于利用哈夫曼树压缩和解压的代码中解压的一部分,代码可以从已经压缩的文件中得到原文件的所有的字符,但是在将得到的字符写入的另一个文件中的时候出现了上面的问题,下面是完整代码的链接,需要下载请打开链接后直接点左上角的下载进行下载: