загрузка двоичных данных для программы шифрования - PullRequest
0 голосов
/ 03 сентября 2010

как мне загрузить файл в мою программу, чтобы он был просто двоичным.я хочу прочитать двоичный файл из файла, а затем сохранить его в другой файл, чтобы файл стал клоном первого файла (если это исполняемый файл, он будет работать и т. д.).Я хотел бы сохранить данные в массиве или строке, чтобы я мог редактировать их, прежде чем сохранить их.я использую windows 7, майкрософт с ++ 2008.

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

Что-то вроде:

[Редактировать: добавлены необходимые заголовки:]

#include <fstream>
#include <algorithm>
#include <vector>
#include <ios>

// define some place to hold the data:
std::vector<char> binary_data;

// open the file and make sure we read it intact:
std::ifstream file("filename.exe", std::ios::binary);
file.unsetf(std::ios_base::skipws);

// read data from file into vector:    
std::copy(std::istream_iterator<char>(file),
          std::istream_iterator<char>(),
          std::back_inserter(binary_data));

// Edit the binary data as needed...

// create new file: 
std::ofstream new_file("new_file.exe", std::ios::binary);

// Write data from vector to new file:
std::copy(binary_data.begin(), 
          binary_data.end(),
          std::ostream_iterator<char>(new_file));

Это довольно элементарный C ++, но я сразу предполагаю, что вы на самом деле не готовы заниматься шифрованием, если не знаете этого.

0 голосов
/ 03 сентября 2010

Класс std::ifstream сделает это за вас, если вы откроете файл с флагом ios::binary. Вы получите побайтовое содержимое файла. Если вы затем запишите его в другой файл (ofstream), используя ios::binary, вы сделали копию файла.

Если вы можете использовать специфичный для Windows API, Windows предоставляет функцию CopyFile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...