C ++: wie durch Argumente wechseln?
-
26-09-2019 - |
Frage
So habe ich Code wie
int main(int argc, char* argv[])
{
string outputUrl ;
string outputContainer ;
string outputUserName ;
for(int i = 0 i>=argc; i+2){
switch(argv[i]){ //C2450
case "-server" : {outputUrl += (argv[i+1]);} break; //C2051
case "-container" : {outputContainer = (argv[i+1]);} break; //C2051
case "-nickname" : {outputUserName += (argv[i+1]);} break; //C2051
}
}
Warum ist es mir Compiler-Fehler C2450 und C2051 nächste Zeile? Wie so etwas zu beheben?
Lösung
Die switch
Anweisung kann keine Strings verwenden. Sie werden es mit einer Reihe von if
-else if
Aussagen ersetzen müssen statt.
Andere Tipps
C und C ++ switch
Aussagen arbeiten nur auf ganzzahlige Typen. Sie können wie Gießen der Zeiger auf ein int
ein paar Sachen zu tun (und in der Tat Sie auf Zeiger wechseln), aber Sie sind immer noch nicht Verhalten bekommen ‚auf Strings Schalt‘ wie Sie hier wollen.
Sie können auf Zahlen wechseln, nicht auf Zeiger auf Strings. Ich nehme an, du bist Übergang von einer anderen Sprache?
Auch i + 2 sollte i + = 2.
Auch i> = argc soll ich sein
Sie können nicht auf Saiten wechseln, nur Integer-Typen. Sie werden, wenn / sonst jeder explizit haben. Zweitens Bruch tritt in der Case-Anweisung, nicht außerhalb.
Sie wechseln können nicht auf eine Zeichenfolge , oder irgendetwas anderes, das nicht eine ganze Zahl ist oder nicht auf einem umgewandelt werden. Verwenden Sie drei "if" Anweisungen statt.
Verwenden Sie so etwas wie getopt. Es gibt eine schöne (aber nicht vollständig) Umsetzung: http: // www. codeproject.com/KB/cpp/xgetopt.aspx?msg=614581 . Oder nutzen boost.Program_options: http://www.boost.org /doc/libs/1_41_0/doc/html/index.html .