[C++] Variablen im system() Aufruf

Guten Morgen,
Wie kann ich beim system()-Aufruf Variablen „einbinden“???

Also in etwa so

char test[] = "Testtext"; system("Das ist nur ein ->und hier die Variable<-"); Das mit dem char-Array war nur ein Beispiel, sollte auch mit integern und so gehen.

mfg cryspy

Kenn mich mit c++ net so gut aus, aber eigentlich so:

char test[] = "Testtext"; system("Das ist nur ein " + test[]);

Hey,

ersma vorweg…das hatten wir hier schon :wink:

trotzdem:

Dafür gibts mehrere Möglichkeiten.
Auf jeden Fall musst du deinen Krahm immer in einen Char-String umwandeln.
Ich mach das immer so: size=0[/size]001: #include <iostream> 002: using namespace std; 003: 004: int main(){ 005: string befehl, variable; // Initialisieren von 2 Strings 006: 007: befehl = "firefox "; // In den einen kommt der Befehl/nachricht 008: getline(cin, variable); // Den anderen mit Daten füllen 009: 010: befehl.append(variable); // Die Daten an die Nachricht dranhängen 011: system(befehl.c_str()); // system() das komplette Ding übergeben 012: return 0; 013: }Funktionieren tut das dann so:

Zeile 5: 2 Strings werden deklariert. In den einen kommt deine Message, der Befehl oder sonstwas.
In den anderen dann eine Variable, ein Attribut, Parameter, Argument, etc.

Zeile 7: der eine String kriegt nun den Inhalt ‚firefox‘
Zeile 8: Der andere wird jetzt eingelesen
Zeile 10: Die Variable wird jetzt an den Befehl drangehängt
Zeile 11: Das komplette teil wird in einen C-String(=char ) umgewandelt und ausgeführt.
system() erwartet const char
, daher muss man das halt umwandeln.

Wenn man nun was eingibt, wird der Firefox(insofern es dein Standartbrowser ist) mit dem Attribut gestartet, dass du eingegeben hast.

lg,

n1ob

Hallo,

die Variante von YpsilonZet wird nicht funktionieren. Nimmt man statt system("Das ist nur ein " + test[]); //folgendes system("Das ist nur ein " + test);wird der Code zwar compilieren, aber am Ende nicht die Strings konkatenieren, sondern lediglich zwei Pointer addieren.

@Cryspy: Hast du C++ oder willst du nen C-Code? In C kannste strcat zum konkatenieren verwenden. Für C++ hat N10B ja schon was gepostet.

N43

[code]//sollte eigentlich beser geeignet sein
char homepage[50];
std::getline(cin, homepage);

system(sprintf(„firefox http://%s“, homepage));[/code]

mein c is nicht ganz so toll aber naja xD

Wie gesagt, c++ ist nicht wirklich meine welt.
Bin nur von java und c# ausgegangen

Wie gesagt, c++ ist nicht wirklich meine welt.
Bin nur von java und c# ausgegangen.

war ja auch nicht verkehrt - nur halt ned sprachspezifisch :wink:

C++ wäre nice…

Der Code von N10B sieht an sich gut aus, aber muss man für „string“ nicht noch #include (oder so was) machen???

By the way:
Mit diesem ‚+‘ kommt dann immer etwas wie" cannot add two pointers…", ich werd nochmal nach der ganzen Fehlermeldung schauen :wink:

Ne, das geht auch ohne. Entweder gehört das zum standart, oder es ist irgendwo mitverlinkt.

…falls du aber das Bedürfnis hast es trotzdem reinzupacken - nur zu :wink:
…im schlimmsten fall bläht das (nur) deine exe auf.

lg,
n1ob