2010-11-25 5 views
0

hier ist mein Code:Problem mit bash (System-> wget) Befehl in C++

string line; 
ifstream toOpen; 
toOpen.open("allfiles.txt", ios::in); 
int fileCounter=0; 

if(toOpen.is_open()){ 
    while(!toOpen.eof()){ 
     getline(toOpen,line); 
     string dl = "wget -q -E -O superman/" + href[0] + " " + line; 
     //cout << dl << endl; 
     fileCounter++; 
     system(dl); 
    } 

    toOpen.close(); 
} 

Wo die allfiles.txt (der Inhalt):

http://www.xxx.com/index1.html 
http://www.xxx.com/index2.html 

Wo href [] Werte wie: {index1.html, index2.html, index3.html ...}

Meine Fehlermeldung:

file.cpp:XX: error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int system(const char*)’ 
+2

Haben Sie wirklich nie 'std :: string :: c_str()'? –

+0

@ignacio: Ich denke, ich verstehe es jetzt. Entschuldigung für diese Art von Noob-Frage. Ich habe gerade mit C++ angefangen – popurity09

Antwort

3

Die Funktion 'System' ein 'const char *' als Argument verwendet, aber sie gab es einen std :: string. Versuchen Sie

system(dl.c_str()); 
2

system will ein const char * Argument, so müssen Sie dl.c_str() aufrufen, um eine char * zu den std::string Daten zu bekommen.

system(dl.c_str()); 
1

system() nichts über C++ - Typen wissen. Sie haben es char* so geben:

system(dl.c_str());