Getopt - передача строкового параметра для аргумента
У меня есть программа, которая принимает несколько аргументов командной строки, поэтому я использую getopt. Один из моих аргументов принимает в качестве параметра строку. Есть ли способ получить эту строку через функцию getopt или мне нужно получить ее через массив argv []? Также может getopt читать аргументы, такие как-file
? Все аргументы, которые я видел до сих пор, имеют только один символ, такой как-a
РЕДАКТИРОВАТЬ
Из приведенных ниже ответов я написал программу для использования getopt_long (), но оператор switch распознает аргумент только тогда, когда я использую символьный аргумент, а не длинный аргумент. Я'Я не уверен, почему это происходит. При передаче аргументов-mf -file sample
Я не вижу печатных заявлений.
РЕДАКТИРОВАТЬ
Я попытался ввести аргументы команды как--file
и тогда это сработало. Разве это не возможно сделать это с просто?-file
static struct option long_options[] =
{
{"mf", required_argument, NULL, 'a'},
{"md", required_argument, NULL, 'b'},
{"mn", required_argument, NULL, 'c'},
{"mw", required_argument, NULL, 'd'},
{"lf", required_argument, NULL, 'e'},
{"ld", required_argument, NULL, 'f'},
{"ln", required_argument, NULL, 'g'},
{"lw", required_argument, NULL, 'h'},
{"rf", required_argument, NULL, 'i'},
{"rd", required_argument, NULL, 'j'},
{"rn", required_argument, NULL, 'k'},
{"rw", required_argument, NULL, 'l'},
{"df", required_argument, NULL, 'm'},
{"dd", required_argument, NULL, 'n'},
{"dn", required_argument, NULL, 'o'},
{"dw", required_argument, NULL, 'p'},
{"file", required_argument, NULL, 'q'},
{NULL, 0, NULL, 0}
};
int ch=0;
while ((ch = getopt_long(argc, argv, "abcdefghijklmnopq:", long_options, NULL)) != -1)
{
// check to see if a single character or long option came through
switch (ch){
case 'a':
cout