0

So habe ich Code wieC++: Wie durch Argumente zu wechseln?

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 es mir nicht geben Compiler-Fehler C2450 und C2051 nächste Zeile? Wie so etwas zu beheben?

Antwort

3

Die switch-Anweisung kann keine Zeichenfolgen verwenden. Sie müssen es stattdessen durch eine Zeichenfolge von if - else if Anweisungen ersetzen.

1

Sie können keine Strings, nur Integer-Typen, einschalten. Du musst explizit wenn/sonst jeder. Zweitens tritt der Bruch innerhalb der case-Anweisung auf, nicht außerhalb.

+2

Nichts ist falsch mit den Brüchen; Es gibt nur einen redundanten Satz von Klammern für jeden Fall. –

2

C und C++ switch Anweisungen funktionieren nur bei integrierten Typen. Sie können ein paar Dinge tun, wie den Zeiger auf eine int (und tatsächlich schalten Sie Zeiger), aber Sie werden immer noch nicht 'Strings einschalten' Verhalten wie Sie hier wollen.

Why no switch on pointers?

2

Sie können auf Zahlen wechseln, nicht auf Zeiger auf Strings. Ich nehme an, dass du aus einer anderen Sprache kommst?

Außerdem sollte i + 2 i + = 2 sein.

Auch i> = argc sollte ich < argc

+1

Ja, das 'für' Statement ist komplett kaputt, oder? Ich habe es nicht bemerkt. –

+0

Ich begann tatsächlich zu schreiben "Wo beginne ich ..." – Stu

1

Sie can't switch on a string, oder irgendetwas anderes, das nicht eine ganze Zahl ist oder nicht auf einen umgerechnet werden können. Verwenden Sie stattdessen drei "if" -Anweisungen.

Verwandte Themen