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

Ответы на вопрос(2)

Ваш ответ на вопрос