Привет!
Я новичок в программировании на C ++, поэтому мне нужна «небольшая» помощь, чтобы распаковать / упаковать файл с именем packproject.opf, который является двоичным файлом .
У меня есть алгоритм сделать упаковщик / распаковщик.
Format Specifications
byte {X} - File Data
// DIRECTORY
uint32 {4} - Number Of Files
// for each file
char {X} - Filename
byte {1} - null Filename Terminator
uint32 {4} - File offset
uint32 {4} - File Size
uint32 {4} - Directory Offset
Можете мне в этом помочь? Каковы первые шаги к созданию такой программы? Неужели это сложно сделать? Извините за плохой английский sh.
С нетерпением жду вашего положительного ответа.
МОЙ код:
#include <windows.h>
#include <string>
#include <iostream>
#include <fstream>
#include <iterator>
#include <filesystem>
using namespace std;
void listFiles(unsigned int curLine, string search, string filename, uint32_t NOF, uint32_t FileOffset, uint32_t FileSize, uint32_t DirectoryOffset) {
//Show all .CBaseClass files stored in binary data container [.opf]
curLine = 0;
search = "CBaseClass";
fstream myfile("PackedProject.OPF", ios::in | ios::out | ios::binary | ios::ate);
myfile.open("PackedProject.opf");
if (myfile.is_open()) {
while (getline(myfile, filename)) {
curLine++;
if (filename.find(search, 0) != string::npos) {
cout << "CBaseClass files:" << search << "Line:" << curLine << endl;
}
}
}
}
int main(int argc, char** argv) {
fstream myfile("PackedProject.OPF", ios::in | ios::out | ios::binary | ios::ate);
if (!myfile) {
cout << "Error\t! cannot read .OPF file!" << endl;
}
else {
/*
cout << "Reading .OPF binary data container" << endl;
myfile.seekg(0, ios::end);
int file_size = myfile.tellg();
cout << "Filesize:\t" << file_size << "Bytes" << endl;
*/
listFiles;
system("PAUSE");
}
}