argv[] in string
-
Hallo,
Will etwa sowas machen:
string str = "\bin\sh" + argv[1]Die Umwandlung klappt aber nicht...
Wie müsste ich das schreiben?Danke für die Hilfen!
-
z.B.
string str; ... sprintf(str,"/bin/sh %s",argv[1]); ...
-
stringconstchar schrieb:
string str = "\bin\sh" + argv[1]Die Umwandlung klappt aber nicht...
Wie müsste ich das schreiben?Naja, Du möchtest vermutlich eher "/bin/sh" schreiben oder allerhöchstens "\\bin\\sh".
sprintf brauchst Du dafür nicht, höchstens einen Cast nach std::string als kleine Hilfe für den Compiler.
Wenn Du sowas schreibst, sollte das ohne Probleme funktionieren:
string str = "/bin/sh"; str += argv[1];Sowas in der Richtung müsste genauso funktionieren:
string str = static_cast<string>("/bin/sh") + argv[1];Ist aber natürlich ungetestet und daher mit etwas Vorsicht zu genießen.

-
Dieser Thread wurde von Moderator/in nman aus dem Forum Linux/Unix 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.
-
Müsste nicht auch
string str = string("\bin\sh") + argv[1]gehen, schließlich würde da doch ein Objekt erzeugt? Doch, ich glaube es geht. Aber ich bin grad Compiler-faul

-
Badestrand schrieb:
Müsste nicht auch
string str = string("\bin\sh") + argv[1]gehen, schließlich würde da doch ein Objekt erzeugt? Doch, ich glaube es geht. Aber ich bin grad Compiler-faul

Klar. Aber ich halte die static-cast-Variante für effizienter. (Nicht dass das hier irgendeine Rolle spielen würde, oder ich auch nur ansatzweise oft genug C++ verwenden würde, um dafür ein guter Ansprechpartner zu sein.
)Aber nochmal: "\bin\sh" kannst Du auf keinen Fall schreiben, entweder mit / oder mit \.
-
nman schrieb:
Klar. Aber ich halte die static-cast-Variante für effizienter.
Hmm, was daran wohl effizienter ist (nicht dass das hier irgendeine Rolle spielen würde
).
Das von Badestrand ist schon die beste Lösung dafür ...Edit:
nman schrieb:
string str = "/bin/sh"; str += argv[1];Hier erspart man sich natürlich einen Konstruktoraufruf weniger als im anderen Code.
-
KasF schrieb:
Hier erspart man sich natürlich einen Konstruktoraufruf weniger als im anderen Code.
Das ist ein schöner Satz.

-
Braunstein schrieb:
KasF schrieb:
Hier spart man sich natürlich einen Konstruktoraufruf weniger als im anderen Code.
Das ist ein schöner Satz.

?
?
-
Lies das noch mal genau durch. Ich markiere mal zwei Wörter.
Hier spart man sich natürlich einen Konstruktoraufruf weniger als im anderen Code.
-
weniger = mehr
