2016-08-02 108 views
0
system("mkdir C:\\Users\\USER\\Desktop\\test"); 

Ich fand dies jedoch nicht, da funktioniert mein Code wie diesewählbares Verzeichnis für ein C++ Systemfunktion ausführen von

string inputFAT = "input.FAT"; 
    string outputdirecotry = "adirectory"; 
    string exepath = "FATool.exe"; 

    cout << "enter the directory you would like to have the files put out to"; 
    getline(cin, outputdirecotry); 
    string outputdirectorycommand = "cd " + outputdirecotry; 


    cout << "enter the path of the file you want to extract"; 
    getline(cin, inputFAT); 

    cout << "enter the path to the FATool executable"; 
    getline(cin, exepath); 

    string exportcommand = exepath + " -x " + inputFAT; 
    system(outputdirectorycommand.c_str && exportcommand.c_str()); 

sieht aus, als Sie ich brauche den Benutzer sehen kann, um das Verzeichnis zu definieren dass die Systemfunktion gehen muss und wenn ich versuche, es zu bauen sie diese Fehler

Severity Code Beschreibung Projektdatei Zeilenunterdrückungszustand Fehler C3867 ‚std :: basic_string, std :: allocator wirft > :: c_str ': Nicht-Standard-Syntax; Verwendung '&' ein Zeiger auf ein Element FATool erstellen ++ c: \ users \ russ \ Dokumente \ Visual Studio 2015 \ projects \ fatool ++ \ fatool ++ \ main.cpp 24

und auch diese

Severity Code Beschreibung Projektdatei Zeilenunterdrückungsstatus Fehler C2664 'int system (const char *)': Argument 1 kann nicht von 'bool' in 'const char * * konvertiert werden FATool ++ c: \ users \ russ \ documents \ visual studio 2015 \ projects \ fatool ++ \ fatool ++ \ main.cpp 24

so ist es sogar möglich, dies zu tun oder sollte ich nur meine verliert und mich als das Verzeichnis und habe meine Freunde den Code zu gehen und das gleiche tun

Antwort

1

Der Parameter zu system() bestanden ist falsch:

system(outputdirectorycommand.c_str && exportcommand.c_str()); 

Die Syntax outputdirectorycommand.c_str ist falsch, und der an system() übergebene Parameter ist bool, was offensichtlich falsch ist.

string cmdToExecute = outputdirectorycommand + " && " + exportcommand; 
system(cmdToExecute.c_str()); 
+0

wow Ordnung dank i gelehrt nie tun, dass es jetzt so offensichtlich scheint –

1
system(outputdirectorycommand.c_str && exportcommand.c_str()); 

Dieser versucht, die Adresse des std :: string zu nehmen:

Angenommen, was Sie tun möchten, ist cd <x> && FATool.exe -x <xxx> auszuführen, dann sollten Sie Ihren Befehl und übergeben es an system()cat: : c_str-Funktion, wandle sie in bool und logical um und teste sie mit der bool-Konvertierung des Rückgabewertes von exportcommamd.c_str().

Sie soll wahrscheinlich

system(outputdirectorycommand.c_str() + " && " + exportcommand.c_str()); 
+0

Ich denke, das funktioniert auch aber ich denke, dass die erste Antwort der Weg des geringsten Widerstandes ist verdient noch eine upvote obwohl –