system() + string möglich ?
-
Hallo,
void exestart(string exestart) { string localsystem = "\"start "exestart\""; system(exestart); }exestart(firefox.exe);ich möchte "start firefox.exe" beliebig durch einen anderen string ersetzen.
ist das möglich?
-
Ja.
http://www.cplusplus.com/reference/string/operator+/
http://www.cplusplus.com/reference/string/string/c_str/
-
system(mystr.c_str());Aber lass system() bleiben, dafür gibts i.d.R. bessere Mittel.
-
okay super funktioniert

aber warum muss ich einen cstring in system einfügen? wieso geht es nicht mit einem normalen string ?
-
Weil system eine C-Funktion ist.
-
-
du meintest ich sollte system lieber lassen.
wenn ich eine batch datei aufrufen will, habe ich da bessere alternativen als system() ?
-
kantaki schrieb:
wenn ich eine batch datei aufrufen will, habe ich da bessere alternativen als system() ?
Ja, verwende Plattform spezifischen Code. Für welches OS entwickelst du denn?
Grüssli
-
ich selber nutze windows 7 aber ich möchte eigentlich das es auch auf xp vista funktioniert.
-
kantaki schrieb:
ich selber nutze windows 7 aber ich möchte eigentlich das is auch auf xp vista funktioniert.
Das ist eigentlich kein Problem, solange es nicht noch Mac und Linux sein soll

In der WinAPI Abteilung kann man dir da besser helfen, aber grundsätzlich solltest du mitShellExecuteoderCreateProcessbedient sein.Grüssli
-
okay leute eine frage hab ich noch. ich schwöre das ist die letzte für heute ^^
#include<fstream> #include<iostream> #include<cstdlib> #include<fstream> #include<string> #include<cstring> #include<vector> using namespace std; void multistarter( string exename, string site ) { char * cstr; string localsystem = "\"start " + exename+" "+ site "\"" ; cstr = new char [localsystem.size()+1]; strcpy (cstr, localsystem.c_str()); system(cstr); delete[] cstr; } int main() { ifstream source; vector<string> svec; string lines; string dataname ="test.txt"; source.open(dataname.c_str()); if (!source) { cerr << dataname << " not found\n"; return-1; } while (getline(source,lines)) { svec.push_back(lines); } for (vector<string>::size_type index = 0; index!=svec.size(); ++index) { multistarter(svec[index]); } }in der test datei steht immoment
firefox.exe, wwww.cplusplus.deleider bekomme ich schon einen compiler fehler =>too few arguments
aber ich habe doch 2 strings in der function ?
-
Hm.. wie viele Parameter bekommt "multistarter" und wie viele hast du übergeben?
-
cooky451 schrieb:
Hm.. wie viele Parameter bekommt "multistarter" und wie viele hast du übergeben?
void multistarter( string exename, string site ) // 2 string argumentsund gelesen wird firefox.exe, wwww.cplusplus.de
aber irgentwie übersehe ich irgentwas. aber ich finde es nicht. vielleicht sollte ich heute einfach mal pause machen und mir das programm morgen nochmal anschauen T_T.
-
kantaki schrieb:
cooky451 schrieb:
Hm.. wie viele Parameter bekommt "multistarter" und wie viele hast du übergeben?
void multistarter( string exename, string site ) // 2 string argumentsund gelesen wird firefox.exe, wwww.cplusplus.de
aber irgentwie übersehe ich irgentwas. aber ich finde es nicht. vielleicht sollte ich heute einfach mal pause machen und mir das programm morgen nochmal anschauen T_T.
Guck dir doch mal Zeile 47 an?

Du solltest einfach die Grundlagen lernen.
-
cooky451 schrieb:
Guck dir doch mal Zeile 47 an?

Du solltest einfach die Grundlagen lernen.hmm?
multistarter(svec[index]); gibt doch eine zeile von meiner textdatei aus. also in diesem fall firefox.exe, wwww.cplusplus.de.
überseh ich etwas ?
-
kantaki schrieb:
multistarter(svec[index]); gibt doch eine zeile von meiner textdatei aus. also in diesem fall firefox.exe, wwww.cplusplus.de.
überseh ich etwas ?
cooky451 schrieb:
Hm.. wie viele Parameter bekommt "multistarter" und wie viele hast du übergeben?
Alles dreht sich irgendwie im Kreis.
P.S.: C++ ist übrigens keine Skriptsprache. Falls du glaubst dies hier ginge, dann irrst du dich gewaltig:
void foo(int, int); int main() { int a, b; string argument = "a, b"; foo(argument); }
-
hm okay dh ich muss jedes wort trennen und einer variable zuweisen. müsste doch machbar sein. naja jedenfalls danke schonmal. ich setzte mich morgen nochmal dran.