c++ - put 和 read 字符不匹配

标签 c++ file-io ifstream ofstream

我正在尝试编写霍夫曼编码器,但出现了一些压缩错误。我将问题确定为 put() 到 ofstream 的字符与来自同一文件的 read() 字符之间的不匹配。

此问题的一个具体实例:

  • put() 写入 ASCII 字符 10(换行)
  • read() 读取 ASCII 字符 13(回车)

我想读取和放置读取和写入原始数据(没有字符翻译)我不确定为什么会这样。有人可以帮帮我吗?

这是写入压缩文件的 ofstream 实例:

std::ofstream compressedFileStream(getCompressedFileName(),std::ios::binary||std::ios::ate);

和读取相同的 ifstream 实例

    std::ifstream fileInput(getFileName()+".huf",std::ios::binary);

代码在Windows 7上运行,程序中的所有流都以二进制模式打开。

最佳答案

由于打字错误,无法以二进制模式打开:

std::ofstream compressedFileStream(getCompressedFileName(),std::ios::binary||std::ios::ate)

应该是:

std::ofstream compressedFileStream(getCompressedFileName(),std::ios::binary|std::ios::ate)
                                                                      //   ^

|,不是||

关于c++ - put 和 read 字符不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8776284/

相关文章:

C++ 文件写入 - 没有按预期写入变量

c++ - 在函数中返回 ifstream

C++ 模板通过枚举指定类型

c# - 将文件保存在临时目录中是否被认为是好的/可接受的做法?

c++ - 防止链接器删除导出的函数

java - 如何使用FileWriter将内容写入文件中的特定位置?

c++ - 访问冲突读取位置 0x00000014。使用流

c++ - 使用 getline() 无限运行的匹配词 c++ 程序?

c++ - 使用 if 流读取简单的 c++ 文件

c++ - 从 std::array 获取对原始数组的引用