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.
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.
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.