Anfängerfrage: String als Argument an Funktion übergeben
-
Hallo Ihr Wissenden.
Ich hab da mal ne Anfängerfrage.
Ich möchte einer Funktion mehrere Strings übergeben, wovon einer optional sein soll.
Die Strings kommen ursprünglich aus den Befehlszeilenparametern von _tmain
Ich habe also argv[1],argv[2] und optional argv[3]Bitte helft mir mal auf die Sprünge.
Ich arbeite mit MS C++.NetDanke,
Carsten
-
Das sind alles Zeiger, gib dem letzten einfach NULL in der Deklaration.

Aber falsches Forum, das ist kompilerunabhängig.
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Was genau willst du denn machen? Strings sind genauso Datentypen wie jeder andere auch (eigentlich gibt's sogar mindestens zwei Varianten - char*, std::string und systemeigene Entwicklungen) und können als Parameter herumgereicht werden.
Wenn es dir um den optionalen argv[3] geht: ob der angegeben wurde, kannst du über argc erfahren. Und wenn nicht, könntest du stattdessen einen Defaultwert (leerer String oder NULL) übergeben oder eine andere Funktion aufrufen:
int main(int argc,char**argv) { if(argc>=3) func(argv[1],argv[2],argv[3]); else func(argv[1],argv[2],""); //oder func2(argv[1],argv[2]); }
-
Pfuh... das ging ja flott.
Dank Dir erstmal estartu.
Ich kann mit Deiner Antwort leider noch nichts anfangen.
Wie sieht denn der Prototyp aus, wenn ich die Funktion CopyFile nenne und die Argumente SourceFile,DestinationFile und LogFile ?
by the way die Länge des Textes speilt bei den Zeigern dan keine Rolle mehr ?
-
Telefisch schrieb:
Ich kann mit Deiner Antwort leider noch nichts anfangen.
Wie sieht denn der Prototyp aus, wenn ich die Funktion CopyFile nenne und die Argumente SourceFile,DestinationFile und LogFile ?bool CopyFile(const char* src,const char*dest,const char* log) { if(log==NULL) //Sonderbehandlung - kein LogFile angegeben ... }by the way die Länge des Textes speilt bei den Zeigern dan keine Rolle mehr ?
Ja, argv hat genug Platz für die Kommandozeilen-Argumente. Und wenn du die Länge benötigst, kannst du sie per strlen() ermitteln (oder du nimmst std::string).
-
Tolles Forum.
Hat bei mir jetzt etwas gedauert.
Musste erst mit VBA spielen
Danke für Eure prompten Antworten, damit komme ich weiter.