Ich habe ein Programm, das mehrere Befehlszeilenargumente nimmt, so dass ich getopt verwenden. Eines meiner Argumente nimmt eine Zeichenfolge als Parameter auf. Gibt es trotzdem einen String durch die getopt-Funktion oder müsste ich ihn über das Array argv [] erhalten? Kann auch lesen args wie -file
lesen? Alle Argumente, die ich bis jetzt gesehen habe nur einen Charakter wie -a
Getopt- übergeben Zeichenfolge Parameter für Argument
EDIT
Von den unten Antworten, die ich geschrieben habe, ein Programm zu verwenden getopt_long(), aber die switch-Anweisung erkennt nur das Argument, wenn Ich benutze das Argument character und nicht das Argument long. Ich bin mir nicht sicher, warum das passiert. Beim Übergeben der Argumente -mf -file sample
sehe ich die print-Anweisungen nicht.
EDIT
ich versucht, die Befehlsargumente als --file
Eingabe und arbeitete dann. Ist das nicht möglich mit -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;
}
}
ich versucht habe getopt_long verwenden, aber mein Programm erkennt nicht, die die Argumente. Ich habe meinen Code oben hinzugefügt. – AndroidDev93
@ AndroidDev93: Überprüfen Sie meine Bearbeitung – phoxis