So starten Sie ein Programm mit Befehlszeilenargumenten unter Windows cmd

415
abhinonymous

Ich weiß, dass es ein paar ähnliche Fragen gibt wie hier, aber obwohl ich sie durchgegangen bin, konnte keiner mein Problem lösen. Mein Code enthält drei Zeichenfolgen als Parameter

auf cmd

volume.exe NameOfInputFile.txt string1 string2 

der Code

int main(int argc, char* argv[]) { string s1=argv[2],s2=argv[3]; fstream file; file.open(argv[1],ios::in); ..rest of the code.. } 

das funktioniert gut auf dem terminal in linux

./volume.exe NameOfInputFile.txt string1 string2 

Aber wie bekomme ich es, unter Windows zu arbeiten? Ich habe es versucht, aber es hat nicht funktioniert

start /b /d volume.exe NameOfInputFile.txt string1 string2 
-1
Ich glaube, start / b / d "volume.exe NameOfInputFile.txt string1 string2" `sollte gut funktionieren. Warum sollte es nicht funktionieren? mnmnc vor 9 Jahren 0
Der `/ d`-Parameter wird verwendet, um ein Arbeitsverzeichnis festzulegen. Führen Sie stattdessen diesen Befehl aus: `start / b volume.exe NameOfInputFile.txt string1 string2` and31415 vor 9 Jahren 0
Weder `start / b volume.exe NameOfInputFile.txt string1 string2` funktioniert noch` start / b / d "C: .. address .." volume.exe NameOfInputFile.txt string1 string2` abhinonymous vor 9 Jahren 0
Wo man nicht weiß, liegt es nahe, den Test zu vereinfachen und ohne Datei auszuprobieren. Ich möchte gerne sehen, ob Sie ein Programm ausführen können, das nur eine Zeichenfolge verwendet und diese anzeigt. grundlegende Fehlerbehebung barlop vor 9 Jahren 0
@barlop hat das gemacht, hat nicht funktioniert, daher der Post auf Superuser abhinonymous vor 9 Jahren 0
@abhinonymous Wenn Sie das getan haben und es nicht funktioniert hat, bedeutet dies, dass Sie ein einfacheres, klareres Beispiel hatten, um das Problem zu demonstrieren. Sie hätten das in Ihrer Frage verwenden sollen und können es immer noch. barlop vor 9 Jahren 0
@abhinonymous Außerdem geben Sie an, wie Sie das Programm aufgerufen haben. Ihr Beispielcode enthält nicht einmal ein Beispiel in der ..., das jeder kompilieren und schnell testen könnte. Abgesehen davon, dass Ihrer Meinung nach keine Datei an erster Stelle eingefügt werden muss. barlop vor 9 Jahren 0

2 Antworten auf die Frage

0
user3793099

Versuchen Sie dies, indem Sie den Namen der Datei NameOfInputFile.txt in Anführungszeichen setzen, die Sie als String-Argument übergeben und nicht als Datei.

start /b /d volume.exe "NameOfInputFile.txt" string1 string2 
0
deming

Probier diese:

start /b /d "volume.exe NameOfInputFile.txt string1 string2"