在你提供的代码中,我注意到一个可能导致解压后乱码的问题。在函数decompressFile
中,使用reinterpret_cast<char&>(ch)
将无符号字符转换为有符号字符可能导致数据损坏。建议使用以下方式进行读取:
while (ifs.read(reinterpret_cast<char*>(&ch), sizeof(ch))) {
for (int i = 7; i >= 0; --i) {
bool bit = (ch >> i) & 1;
cur = bit ? cur->right : cur->left;
if (!cur->left && !cur->right) {
ofs.put(cur->ch);
cur = root;
}
}
}
另外,请确保输入文件和输出文件的路径正确,并且编译环境支持C++11或以上版本。
如果问题仍然存在,请提供更多详细信息,以便进一步排查问题。
内容由零声教学AI助手提供,问题来源于学员提问