C++ 精确复制文件内容

标签 c++ file-io

作为我正在制作的一个有趣的加密项目的一部分,我想获取文件的内容,无论是 PDF、DOCX、JPEG 还是任何 ASCII 文件,以数字方式处理字符,然后反转过程最后给出一个原始文件类型的文件,可以正常打开等。

首先,在我测试时,我想我会将一个 .docx 文件的内容读入一个字符串,然后将其直接写入另一个具有不同名称的 .docx 文件。但是,完成此操作后,Microsoft Word 拒绝打开文件:“文件已损坏,无法打开”。

这是我用来复制文件的代码:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream inputFile("C:\\Users\\MyUser\\Documents\\This is a test.docx", ios::in | ios::binary);
    inputFile.seekg(0, ios::end);
    int length = inputFile.tellg();
    inputFile.seekg(0, ios::beg);
    string fileContents;
    fileContents.resize(length);
    inputFile.read(&fileContents[0], length);
    inputFile.close();

    ofstream outputFile("C:\\Users\\MyUser\\Documents\\TestCopy.docx", ios::app);
    outputFile.write(&fileContents[0], length);
    outputFile.close();


    cout << "Complete.";
    int n;
    cin >> n; //Keeps the program open so message can be read.
}

问题是什么,如何编辑程序以提供有效文件?

提前干杯。

最佳答案

您的输出流不是二进制模式。

关于C++ 精确复制文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18380579/

相关文章:

c++ - 私有(private)非常量和公共(public) const 成员函数 - 和平共存?

c++ - 是否可以只使用 function-member 属性创建回调接口(interface)?

java - JVM 可以处理的最大文件大小是多少?

java - 在 cpu 和空间低的 java (android) 中保存 short[]

c - 如何编写从文本文件返回特定行的 ANSI C 用户定义函数?

c++ - objective-c /c++ : error when assign NSArray value into c++ static array

c++ - C、C++ 从二进制文件中提取结构成员

c++ - 是否有类型的静态 vector ?

c - 如何在 C 编程语言中检测 Ctrl-z 文件结束标记

c# - 在 C# 中,如果 2 个进程正在读取和写入同一个文件,避免进程锁定异常的最佳方法是什么?