Frage

Wie übergeben Sie die Optionen auf eine ausführbare? Gibt es einen einfacheren Weg, um die Optionen boolean Argumente als zu machen?

EDIT: Die letzten beiden Antworten werden mit Argumenten vorgeschlagen. Ich weiß, ich kann eine praktikable Lösung so codieren, aber ich habe lieber sie Optionen sein.

EDIT2: Per Ersuchen um Klarstellung, werde ich dieses einfache Beispiel verwenden: Es ist ziemlich einfach Argumente zu handhaben, da sie automatisch in ein Array analysiert erhalten.

./printfile file.txt 1000

Wenn ich möchte wissen, was der Name der Datei der Benutzer drucken möchte ich zugreifen es über argv [1].

Jetzt darüber, wie sich diese Situation:

./printfile file.txt 1000 --nolinebreaks

Der Benutzer möchte die Datei ohne Zeilenumbrüche drucken. Dies ist nicht für das Programm erforderlich, um (als Dateinamen und die Anzahl der Linien drucken) zu laufen, aber der Benutzer hat die Möglichkeit, zu verwenden, wenn, wenn er / sie möchte. Jetzt konnte ich dies tun mit:

./printfile file.txt 1000 true

Die Verwendung Aufforderung würde informiert den Benutzer, dass das dritte Argument verwendet wird, um festzustellen, ob die Datei mit Zeilenumbrüchen oder nicht zu drucken. Dies scheint jedoch eher ungeschickt.

War es hilfreich?

Lösung

Sie scheinen zu glauben, dass es einige grundlegende Unterschied zwischen „Optionen“, die mit „--“ und „Argumente“, die nicht starten. Der einzige Unterschied besteht darin, wie man sie analysiert.

Es könnte sich lohnen, Ihre Zeit bei GNU getopt() / getopt_long() Option Parser zu suchen. Es unterstützt Argumente mit Optionen wie --number-of-line-breaks 47 vorbei.

Andere Tipps

Befehlszeilenargumente sind der Weg zu gehen. Sie betrachten wünschen können Boost.ProgramOptions mit dieser Aufgabe zu vereinfachen.

Ich verwende zwei Methoden zur Weitergabe von Informationen:

1 / Die Verwendung von Befehlszeilenargumenten, die einfacher gemacht werden mit spezifischen Bibliotheken zu handhaben wie getargs.

2 / A Umgebungsvariablen, mit getenv.

Pax hat die richtige Idee hier.

Wenn Sie gründlichere Zweiweg-Kommunikation benötigen, öffnen Sie den Prozess mit Rohren und Sachen zu stdin / hören auf stdout senden.

Sie können auch Fenster des Postmessage () Funktion verwenden. Dies ist sehr praktisch, wenn die ausführbare Datei Sie wollen, dass die Optionen zu schicken, um bereits ausgeführt wird. Ich kann ein Beispiel-Code schreiben, wenn Sie in dieser Technik interessiert sind.

Die Frage ist nicht blazingly klar, Kontext und genau das, was Sie zu tun versuchen - Sie eine ausführbare bedeuten laufen aus einem C ++ Programm? Es gibt mehrere Standard-C-Bibliothek Funktionen mit Namen wie execl (), execv (), execve (), ..., dass die Optionen als Strings oder Zeiger auf ein Array von Strings nehmen. Es gibt auch system (), die einen String enthält, was Sie bei einer Bash-Eingabeaufforderung werden eingeben würde, Optionen und alle.

Ich mag die popt Bibliothek. Es ist C, aber funktioniert gut von C ++ als auch.

Es scheint nicht, plattformübergreifende, obwohl zu sein. Ich fand, dass, wenn ich meine eigene API-kompatible Version von ihm für eine Windows-Portierung einer Software Linux musste Hack aus.

Sie können die Put-Optionen in einer INI-Datei und verwenden Sie die

scroll top