C ++完全复制文件的内容

时间:2013-08-22 12:33:25

标签: 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.
}

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

提前干杯。

2 个答案:

答案 0 :(得分:2)

您的输出流未处于二进制模式。

答案 1 :(得分:2)

看起来您忘了为输出文件(ios :: binary)设置二进制标志。