Я пытаюсь создать простой текстовый файл компрессора и декомпрессора в C++. Так что мой компресс программа принимает аргументы от пользователя в ЦМД таким образом:C++ доступ к нескольким файлам только с одним известным путем
compress abc.txt
Теперь то, что он делает это, создает сжатый файл, abc.cmp и скрытый информационный файл, info.cmp
.
При распаковке предполагается, что оба этих файла находятся в одном каталоге.
Теперь мой вопрос: если файл abc.cmp не находится в том же каталоге, что и мой файл dispress.exe, пользователь должен указать путь abc.cmp, но как использовать этот путь для доступа к info.cmp
?
Например, пользователь будет только TPE:
decompress C:/abc.cmp
Моя программа должна получить доступ к информации о файле, как хорошо, но пользователь не должен предоставлять этот путь
void readInfoFile(string &line, int &n, int &k, unsigned char * &cstream, int &count)
{
ifstream fin("info.cmp");
if (fin.is_open())
{
for (int i = 0; !fin.eof(); i++)
{
if (i == 0)
fin >> n;
else if (i == 1)
fin >> k;
else
{
getline(fin, line, '\0');
}
}
fin.close();
}
for (int j = 1; line[j] != '\0'; j++)
{
line[j - 1] = line[j];
}
count = ceil((float)(((float)(k))/8));
cstream = new unsigned char[count]();
}
void compressedFileStore(unsigned char * &readingArray, int count, char*argv[])
{
ifstream fin(argv[1], ios::in|ios::binary);
fin.read((char*)readingArray, count);
readingArray[count] = '\0';
fin.close();
}