Описание
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
|
||||
#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[])
|
||||
{
|
||||
ArgPars cfg(error, false);
|
||||
cfg.addKey('h', "hello", ArgPars::NO);
|
||||
cfg.addKey('m', "my", ArgPars::OPTIONAL);
|
||||
cfg.addKey('w', "world", ArgPars::REQUIRED);
|
||||
cfg.readArguments(argc, argv);
|
||||
args::Hub hub({
|
||||
{"help", 'h', args::REQUIRED, print},
|
||||
{"name", 'n', args::OPTIONAL, print}
|
||||
}, false);
|
||||
|
||||
if (cfg.checkKey('h'))
|
||||
std::cout << "h установлен" << std::endl;
|
||||
|
||||
if (cfg.checkKey('m'))
|
||||
std::cout << "m установлен " << cfg.getValue('z') << std::endl;
|
||||
|
||||
if (cfg.checkKey('w'))
|
||||
std::cout << "w установлен" << std::endl;
|
||||
hub.readArguments(argc, argv, message);
|
||||
arguments a = hub.getOption('h').getValues(true);
|
||||
arguments b = hub.getOption('n').getValues(true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue