Описание
This commit is contained in:
parent
ba8e55d9c0
commit
e50baa0724
52
README.md
52
README.md
|
@ -1,22 +1,48 @@
|
||||||
# Парсер аргументов
|
# Парсер аргументов
|
||||||
|
|
||||||
|
Обработка аргументов при запуске программы.
|
||||||
|
|
||||||
|
|
||||||
|
Объект типа `Hub` принимает первым аргументом вектор объектов типа `ConfigOption`, где аргументы:
|
||||||
|
|
||||||
|
1. Длинное имя аргумента
|
||||||
|
2. Короткое имя аргемнта
|
||||||
|
3. Наличие значения у аргумента: `NO` (НЕТ), `REQUIRED` (ОБЯЗАТЕЛЬНО), `OPTIONAL` (НЕОБЯЗАТЕЛЬНО)
|
||||||
|
4. Указатель на предварительную функцию-обработчик перед получением фактического значения(ий) аргумента
|
||||||
|
|
||||||
|
Вторым аргументом устанавливается значение тихого режима (по умолчанию `true`) для отображения системных ошибок при чтении аргументов.
|
||||||
|
|
||||||
|
- `readArguments` - чтение аргументов, где 3-ий аргумент функция на обработку ошибочных опций.
|
||||||
|
- `getOption` - получить объект опции
|
||||||
|
- `getValues` - получить значение опции. С параметром `true` выполнить предварительную обработку функцией, переданной в качестве аргумента при создании объекта `Hub`
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
|
#include <argpars.hpp>
|
||||||
|
|
||||||
|
void message()
|
||||||
|
{
|
||||||
|
std::cout << "Неверный аргумент" << std::endl;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef std::vector<std::string> arguments;
|
||||||
|
|
||||||
|
arguments print(const arguments &v)
|
||||||
|
{
|
||||||
|
std::cout << v.front() << std::endl;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
ArgPars cfg(error, false);
|
args::Hub hub({
|
||||||
cfg.addKey('h', "hello", ArgPars::NO);
|
{"help", 'h', args::REQUIRED, print},
|
||||||
cfg.addKey('m', "my", ArgPars::OPTIONAL);
|
{"name", 'n', args::OPTIONAL, print}
|
||||||
cfg.addKey('w', "world", ArgPars::REQUIRED);
|
}, false);
|
||||||
cfg.readArguments(argc, argv);
|
|
||||||
|
|
||||||
if (cfg.checkKey('h'))
|
hub.readArguments(argc, argv, message);
|
||||||
std::cout << "h установлен" << std::endl;
|
arguments a = hub.getOption('h').getValues(true);
|
||||||
|
arguments b = hub.getOption('n').getValues(true);
|
||||||
if (cfg.checkKey('m'))
|
|
||||||
std::cout << "m установлен " << cfg.getValue('z') << std::endl;
|
|
||||||
|
|
||||||
if (cfg.checkKey('w'))
|
|
||||||
std::cout << "w установлен" << std::endl;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue