Mike-C 2022-06-12 00:17 采纳率: 50%
浏览 29
已结题

c++文件的输入输出的问题

先逐个字符读取一个txt文件,内容如下:

img

将读取的字符存入一个队列中,内容如下:

img

在将队列中的字符写到另一个文件中,代码如下:

        ofs.open("2.txt", ios::out | ios::binary);
        while (!q.empty()) {
            ofs.write((char*)&q.front(), sizeof(unsigned char));
            q.pop();
        }
        ofs.close();

以下是写出的文件内容,和原文件内容一样,没有问题:

img

可是在原文件的最后加入一个 !
如下图所示:

img

再重复上述过程,得到一个队列,并将内容写入 2.txt 中
得到的内容如下:

img

产生了乱码:将队列中的字符和乱码中的字符比较一下:

img

上图中的左边的为原文件的字符,右图为乱码文件中的字符,将左图中的字符写入文件后字符的内容发生了变化。
请问这是为什么,以及解决方法。

上面的问题是关于利用哈夫曼树压缩和解压的代码中解压的一部分,代码可以从已经压缩的文件中得到原文件的所有的字符,但是在将得到的字符写入的另一个文件中的时候出现了上面的问题,下面是完整代码的链接,需要下载请打开链接后直接点左上角的下载进行下载:

https://visiaurora-my.sharepoint.com/:u:/g/personal/mike_visiaurora_onmicrosoft_com/Ee2bNaMaJfVHqici--BrqEABnS9KbBb0L1TjkKlPgtPG1A?e=LXppBh

  • 写回答

1条回答 默认 最新

  • 假装不困 2022-06-12 01:44
    关注

    首先建议你整理下工程的结构,Project 路径里面的样本都是乱码,不可用,翻了一圈,在 Debug 目录找到了题目里面的样本数据

    还有 工程的 .vs 缓存文件,生成的 PDB 文件等等很多编译的临时文件和工程缓存文件都没必要打包上来,提供 Solution 和 Code 就行了

    文件里面已经包含了 !符号,执行后并没有出现你说的问题

    只是在生成的文件中,有个字符解压后出错了,无法识别,文件我都是用 visual studio code 打开的

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月20日
  • 已采纳回答 6月12日
  • 创建了问题 6月12日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助