RepackFile(data_file_data, file_section);
[/code]
Код: Выделить всё
FileSectionВот функция, которая переупаковывает файлы:
Код: Выделить всё
void DictDataManager::RepackFile(std::vector &data_file_data, const FileSection &file_section)
{
std::vector file_data;
uint32_t file_data_size = is_compressed ? file_section.compressed_file_length : file_section.decompressed_file_length;
file_data.resize(file_data_size);
std::ifstream extracted_file(file_section.file_path);
extracted_file.read(reinterpret_cast(file_data.data()), file_data_size);
extracted_file.close();
if (is_compressed)
file_data = CompressDataBuffer(file_data, file_section.compressed_file_length);
// What now?
}
Я пытался использовать функцию Insert() таким образом data_file_data.insert(data_file_data.begin()+file_section.offset, file_data.begin() , file_data.end());, но, к сожалению, это не перезаписывает какие-либо данные, а просто вставляет их, что дает мне вектор значительно большего размера, чем ожидалось, и, конечно, не восстанавливает исходный файл.
Итак, какая простая альтернатива мне действительно нужна — просто записывать данные с определенного смещения и в то же время динамически выделять вектору новый размер, например, Insert() сделал бы это?
Подробнее здесь: https://stackoverflow.com/questions/784 ... ain-offest
Мобильная версия