字符放置和读取不匹配

ang*_*iac 2 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);
Run Code Online (Sandbox Code Playgroud)

以及用于读取相同内容的ifstream实例

    std::ifstream fileInput(getFileName()+".huf",std::ios::binary);
Run Code Online (Sandbox Code Playgroud)

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

hmj*_*mjd 5

由于输入错误而未以二进制模式打开:

std::ofstream compressedFileStream(getCompressedFileName(),std::ios::binary||std::ios::ate)
Run Code Online (Sandbox Code Playgroud)

应该:

std::ofstream compressedFileStream(getCompressedFileName(),std::ios::binary|std::ios::ate)
                                                                      //   ^
Run Code Online (Sandbox Code Playgroud)

|不是||.