Strings Kombinieren
-
Nabend,
bin neuerdings von C auf C++ umgestiegen, leider erscheint mir so einiges noch recht unlogisch und neu. Und deshalb komme ich bei einer Sache nicht weiter. Und zwar : wie hänge ich Strings an einander ?
int main (int argc, char *argv[]) { string a = "test" + argv[1]; return 1; }Das Problem liegt darin, dass ich einen Pointer ranhängen will, aber das geht ja natürlich nicht. Aber ich habe halt sonst keine andere Idee wie man es mit Strings machen kann.
-
string("test") + string (argv[1])
-
Das "Addieren" von std::strings funktioniert deshalb, weil der operator + für diese Klasse überladen ist. (Also bei "a + b" wird einfach eine Funktion aufgerufen, die einen neuen std::string aus den beiden Parametern erstellt und diesen dann zurückgibt.)
Damit diese Operatorüberladung greifen kann, muss natürlich mindestens ein std::sting im Spiel sein. Daher:
int main() { std::string s = "test"; s += argv[0]; } // Oder: int main() { std::string s = std::string("test") + argv[0]; }
-
akoww schrieb:
bin neuerdings von C auf C++ umgestiegen, leider erscheint mir so einiges noch recht unlogisch und neu.
Kleiner Tipp auf den Weg: verwende C++ nicht als besseres C (weil die Versuchung bei C-Programmierern dann doch ziemlich groß ist).
-
Man kann sich das Ganze auch generell vereinfachen, indem man die Programmargumente erst einmal in eine bequemere Form bringt.
int main(int argc, char* argv[]) { std::vector<std::string> arguments(argv, argv + argc); // ab hier mit arguments weiterarbeiten string a = "test" + arguments[1]; // ok