1

作为我正在制作的加密项目的一部分,我想获取文件的内容,无论是 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.
}

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

提前喝彩。

4

2 回答 2

2

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

于 2013-08-22T12:39:22.393 回答
2

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

于 2013-08-22T12:41:55.947 回答