Доступ к списку целых чисел, связанных с параметром командной строки
Я использую gflags в C++ для анализа параметров командной строки. Я хотел бы иметь флаг командной строки, который принимает список параметров. Например param
в примере ниже.
./myprog --param 0 1 2 3
Как я могу получить доступ к списку целых чисел, связанных с этим параметром?
1 ответ
Решение
gflags не поддерживает вывод массива, просто пропускает неизвестные данные, поэтому вы можете выбрать:
Вариант 1, перед gFlags анализировать аргументы вручную, но добавить параметр в gflags - без разбора ошибок, например:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#include <gflags/gflags.h>
DEFINE_string(param, "string", "string");
int main (int argc, char **argv)
{
vector<int> param;
for (int i = 0; i < argc; i++)
{
if (!strcmp(argv[i], "--param"))
{
for (++i; i < argc; i++)
{
if (!isdigit(argv[i][0]))
break;
param.push_back(atoi(argv[i]));
}
}
}
gflags::ParseCommandLineFlags(&argc, &argv, false);
return 0;
}
Выбор 2:
Измените вашу командную строку ввода, например: --param 0,1,2,3
и получить параметр в виде строки в gFlags, разделить строку на ',' и преобразовать в массив целых чисел.