Реализация нотации «app.exe -файл инструкций» в C++
-
21-08-2019 - |
Вопрос
У меня есть проект для моего класса «Структуры данных», который представляет собой компрессор файлов, работающий с использованием двоичных деревьев и других вещей.Нам необходимо «заархивировать» и «разархивировать» любой файл, используя следующие инструкции в командной строке:
Для сжатия: компрессор.exe -zip файл.что угодно
Для распаковки: компрессор.exe - разархивировать файл.zip
Мы программируем в С++.Я использую IDE Code::Blocks и компилирую с помощью GCC в Windows.
Мой вопрос: Как это вообще реализовать??!! Как заставить ваш .exe получать эти параметры в командной строке, а затем выполнять их так, как вы хотите?
Кроме того, что нужно иметь в виду, если я хочу, чтобы эта реализация компилировалась в Linux?
Спасибо за вашу помощь
Решение 3
Логично, я понял!!
Теперь у меня есть базовое представление о том, как использовать аргк и аргумент[ ] параметры на основной() функция (я всегда интересно, для чего они хороши...).Например, если я введу в командную строку:
компрессор.exe - разархивировать файл.zip
Затем:
- argc инициализируется значением «3» (количество аргументов в строке)
- argv[0] == "compressor.exe" (имя приложения).
- argv[1] == "-разархивировать"
- argv[2] == "file.zip"
Грег (не «Крег», извините =P) и Бемроуз, спасибо вам, ребята, за вашу помощь!!^^
Другие советы
Возможно, вы захотите поискать в тексте своей программы подпись main
функция, точка входа вашей программы.Здесь вы сможете получить эти параметры командной строки.
Я не хочу вдаваться в подробности, потому что это, очевидно, ключевой момент задания, и если я когда-нибудь буду работать с вами, я ожидаю, что вы сможете разобраться в подобных вещах самостоятельно. как только вы получите соответствующий толчок.:)
Удачи!
Насколько я помню, Единая спецификация UNIX/POSIX определяет получить выбор в unistd.h, который будет обрабатывать за вас анализ аргументов.Хотя это функция C, она также должна работать и в C++.
ГНУ ГЛИБК есть это в дополнение к getopt_long (в getopt.h) для поддержки расширенного --style GNU.