Wie führe ich ein Kommandozeilenprogramm mit Argumenten aus einem C++ Programm aus? Das ist, was ich gefunden online:C++ Programm zum Ausführen eines anderen Programms mit Kommandozeilenargumenten
http://www.cplusplus.com/forum/general/15794/
std::stringstream stream;
stream <<"program.exe "<<cusip;
system(stream.str().c_str());
Aber es scheint nicht einen tatsächlichen Programmplatz zu akzeptieren, so dass ich bin nicht sicher, wie diese anzuwenden. Meine Hoffnung war, etwas wie dieses zu haben:
std::stringstream stream;
stream <<"C:\Tests\SO Question\bin\Release\HelloWorld.exe "<<"myargument";
system(stream.str().c_str());
Dies gibt mehrere Warnungen im Zusammenhang mit den Backslashes - und das Programm funktioniert nicht. Erwartet Sie, dass Sie das Programm an einem bestimmten Ort haben?
Dies ist die Ausgabe ich in der Konsole:
‚C: \ Test‘ wird als interner oder externer Befehl nicht erkannt, bedienbare Programm oder Batch-Datei.
NACHTRAG:
So basiert auf Jon Antwort die richtige Version für mich sieht wie folgt aus:
#include <iostream>
#include <cstdlib>
#include <sstream>
#include <cstring>
int main(int argc, char *argv[])
{
std::stringstream stream;
stream << "\"C:\\Tests\\SO Question\\bin\\Release\\HelloWorld.exe\""
<< " " // don't forget a space between the path and the arguments
<< "myargument";
system(stream.str().c_str());
return 0;
}
Jede Idee, wie stdout von System umleiten (...) std :: string oder std :: string ? – Pupsik
@Pupsik Die Systemfunktion gibt einen int zurück. Anscheinend müssten Sie die Statuscodes für jedes Betriebssystem kennen, das Sie verwenden: "Wenn der Befehl kein Nullzeiger ist, hängt der zurückgegebene Wert von den System - und Bibliotheksimplementierungen ab, aber es wird im Allgemeinen der Statuscode erwartet aufgerufener Befehl, falls unterstützt. " - von http://www.cplusplus.com/reference/cstdlib/system/ - dann könnten Sie die richtige Fehlermeldung basierend auf dem zurückgegebenen Int erzeugen. – Stepan1010
Was? Hast du meinen Kommentar gelesen? – Pupsik