2013-08-22 2 views
1

Как часть проекта шифрования, который я делаю для удовольствия, я хотел бы взять содержимое файла, будь то PDF, DOCX, JPEG, любой файл ASCII, поиграть с символы в цифровом виде, а затем отменить процесс в конце, чтобы дать файл исходного типа файла, который можно открыть и т. д., как обычно.C++ Точное копирование содержимого файла

Во-первых, по мере того, как я тестировал, я думал, что прочитаю содержимое файла .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

Duh, спасибо, сейчас он работает. – user1546083

2

Похоже, вы забыли установить двоичный флаг для выходного файла (ios :: binary).

Смежные вопросы