Ho un programma che accetta più argomenti da riga di comando, quindi sto usando getopt. Uno dei miei argomenti contiene una stringa come parametro. Esiste comunque la possibilità di ottenere quella stringa attraverso la funzione getopt o dovrei ottenerla attraverso l'array argv []? Inoltre può getopt leggere argomenti come -file
? Tutti gli argomenti che ho visto fino ad ora hanno solo un carattere come -a
Getopt- Passing parametro stringa per argomento
EDIT
Dalle risposte qui sotto ho scritto un programma da utilizzare getopt_long(), ma l'istruzione switch riconosce solo l'argomento quando Uso l'argomento del personaggio e non l'argomento lungo. Non sono sicuro del perché questo accada. Passando gli argomenti -mf -file sample
non vedo le istruzioni di stampa.
EDIT
Ho provato inserendo gli argomenti di comando come --file
e quindi ha funzionato. Non è possibile farlo con solo -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<<"title";
break;
case 'b':
break;
case 'c':
break;
case 'd':
break;
case 'e':
break;
case 'f':
break;
case 'g':
break;
case 'h':
break;
case 'i':
break;
case 'j':
break;
case 'k':
break;
case 'l':
break;
case 'm':
break;
case 'n':
break;
case 'o':
break;
case 'p':
break;
case 'q':
cout<<"file";
break;
case '?':
cout<<"wrong message"
break;
}
}
Ho provato con getopt_long, ma il mio programma non riconosce gli argomenti. Ho aggiunto il mio codice qui sopra. – AndroidDev93
@ AndroidDev93: verifica la mia modifica – phoxis